Skip to content

Commit b72d2f6

Browse files
scheglovCommit Queue
authored andcommitted
DeCo. Make more implementations of isSynthetic deprecated.
Change-Id: I0a150dbf639c04782ed5ccefb52393935cd4aeaf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/466125 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 0c2d08d commit b72d2f6

File tree

11 files changed

+112
-66
lines changed

11 files changed

+112
-66
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,7 @@ class DynamicElementImpl extends ElementImpl {
11931193
];
11941194
}
11951195

1196+
@Deprecated('Use isOriginX instead')
11961197
@override
11971198
bool get isSynthetic => true;
11981199

@@ -2205,6 +2206,7 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl
22052206
return _firstFragment.isStatic;
22062207
}
22072208

2209+
@Deprecated('Use isOriginX instead')
22082210
@override
22092211
@trackedIncludedInId
22102212
bool get isSynthetic {
@@ -2243,12 +2245,12 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl
22432245
TypeImpl get returnType {
22442246
_ensureReadResolution();
22452247

2246-
// If a synthetic getter, we might need to infer the type.
2247-
if (_returnType == null && isSynthetic) {
2248-
if (this case GetterElementImpl thisGetter) {
2249-
thisGetter.variable.type;
2250-
} else if (this case SetterElementImpl thisSetter) {
2251-
thisSetter.variable.type;
2248+
// If an accessor for a variable, we might need to infer the type.
2249+
if (_returnType == null) {
2250+
if (this case PropertyAccessorElementImpl self) {
2251+
if (self.isOriginVariable) {
2252+
self.variable.type;
2253+
}
22522254
}
22532255
}
22542256

@@ -3236,6 +3238,7 @@ class FormalParameterElementImpl extends PromotableElementImpl
32363238
// TODO(augmentations): Implement the merge of formal parameters.
32373239
bool get isSuperFormal => _firstFragment.isSuperFormal;
32383240

3241+
@Deprecated('Use isOriginX instead')
32393242
@override
32403243
bool get isSynthetic {
32413244
return _firstFragment.isSynthetic;
@@ -3808,6 +3811,7 @@ class GenericFunctionTypeElementImpl extends FunctionTypedElementImpl
38083811
@override
38093812
bool get isSimplyBounded => true;
38103813

3814+
@Deprecated('Use isOriginX instead')
38113815
@override
38123816
bool get isSynthetic => _firstFragment.isSynthetic;
38133817

@@ -4217,6 +4221,7 @@ abstract class InstanceElementImpl extends ElementImpl
42174221
setModifier(Modifier.SIMPLY_BOUNDED, value);
42184222
}
42194223

4224+
@Deprecated('Use isOriginX instead')
42204225
@override
42214226
@trackedIncludedInId
42224227
bool get isSynthetic {
@@ -5534,6 +5539,7 @@ class LabelElementImpl extends ElementImpl implements LabelElement {
55345539
/// or `default`).
55355540
bool get isOnSwitchMember => _firstFragment.isOnSwitchMember;
55365541

5542+
@Deprecated('Use isOriginX instead')
55375543
@override
55385544
bool get isSynthetic => _firstFragment.isSynthetic;
55395545

@@ -7184,6 +7190,7 @@ class LocalVariableElementImpl extends PromotableElementImpl
71847190
@override
71857191
bool get isStatic => _firstFragment.isStatic;
71867192

7193+
@Deprecated('Use isOriginX instead')
71877194
@override
71887195
bool get isSynthetic => _firstFragment.isSynthetic;
71897196

@@ -8235,6 +8242,7 @@ class MultiplyDefinedElementImpl extends ElementImpl
82358242
@override
82368243
bool get isPublic => true;
82378244

8245+
@Deprecated('Use isOriginX instead')
82388246
@override
82398247
bool get isSynthetic => true;
82408248

@@ -8374,6 +8382,7 @@ class NeverElementImpl extends ElementImpl {
83748382
return [_firstFragment];
83758383
}
83768384

8385+
@Deprecated('Use isOriginX instead')
83778386
@override
83788387
bool get isSynthetic => true;
83798388

@@ -8637,6 +8646,7 @@ class PrefixElementImpl extends ElementImpl implements PrefixElement {
86378646
.toList();
86388647
}
86398648

8649+
@Deprecated('Use isOriginX instead')
86408650
@override
86418651
bool get isSynthetic => false;
86428652

@@ -9865,6 +9875,7 @@ class TypeAliasElementImpl extends ElementImpl
98659875
setModifier(Modifier.SIMPLY_BOUNDED, value);
98669876
}
98679877

9878+
@Deprecated('Use isOriginX instead')
98689879
@override
98699880
@trackedIncludedInId
98709881
bool get isSynthetic {
@@ -10162,6 +10173,7 @@ class TypeParameterElementImpl extends ElementImpl
1016210173
return _variance == null;
1016310174
}
1016410175

10176+
@Deprecated('Use isOriginX instead')
1016510177
@override
1016610178
bool get isSynthetic {
1016710179
return _firstFragment.isSynthetic;
@@ -10284,8 +10296,6 @@ class TypeParameterFragmentImpl extends FragmentImpl
1028410296
/// [offset].
1028510297
TypeParameterFragmentImpl({required this.name, super.firstTokenOffset});
1028610298

10287-
/// Initialize a newly created synthetic type parameter element to have the
10288-
/// given [name], and with [isSynthetic] set to `true`.
1028910299
TypeParameterFragmentImpl.synthetic({required this.name})
1029010300
: super(firstTokenOffset: null) {
1029110301
isSynthetic = true;
@@ -10557,6 +10567,7 @@ enum _FieldFragmentImplModifiers {
1055710567
enum _FormalParameterFragmentImplModifiers {
1055810568
/// Whether the field was explicitly marked as being covariant.
1055910569
isExplicitlyCovariant,
10570+
isOriginDeclaration,
1056010571
}
1056110572

1056210573
enum _FragmentImplModifiers {

pkg/analyzer/lib/src/dart/element/element.g.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,14 @@ mixin _FormalParameterFragmentImplMixin {
283283
setModifier(Modifier.EXPLICITLY_COVARIANT, value);
284284
}
285285

286+
bool get isOriginDeclaration {
287+
return hasModifier(Modifier.ORIGIN_DECLARATION);
288+
}
289+
290+
set isOriginDeclaration(bool value) {
291+
setModifier(Modifier.ORIGIN_DECLARATION, value);
292+
}
293+
286294
bool hasModifier(Modifier modifier);
287295

288296
void setModifier(Modifier modifier, bool value);
@@ -297,6 +305,7 @@ mixin _FragmentImplMixin {
297305
setModifier(Modifier.AUGMENTATION, value);
298306
}
299307

308+
@Deprecated('Use isOriginX instead')
300309
/// A synthetic element is an element that is not represented in the source
301310
/// code explicitly, but is implied by the source code, such as the default
302311
/// constructor for a class that does not explicitly define any constructors.

pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,8 +627,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
627627
_defineElements(element.getters);
628628
_defineElements(element.setters);
629629
_defineElements(element.methods);
630-
// Skip the representation field.
631-
_elementWalker!.getVariable();
632630
node.body.accept(this);
633631
});
634632
});

pkg/analyzer/lib/src/generated/element_walker.dart

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ class ElementWalker {
4444
ElementWalker.forClass(ClassFragmentImpl this.fragment)
4545
: _constructors = fragment.isMixinApplication
4646
? null
47-
: fragment.constructors.where(_isNotSynthetic).toList(),
47+
: fragment.constructors.where((f) => f.isOriginDeclaration).toList(),
4848
_functions = fragment.methods,
49-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
50-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
49+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
50+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
5151
_typeParameters = fragment.typeParameters,
52-
_variables = fragment.fields.where(_isNotSynthetic).toList();
52+
_variables = fragment.fields.where((f) => f.isOriginDeclaration).toList();
5353

5454
/// Creates an [ElementWalker] which walks the child elements of a compilation
5555
/// unit element.
@@ -62,21 +62,25 @@ class ElementWalker {
6262
_extensions = fragment.extensions,
6363
_extensionTypes = fragment.extensionTypes,
6464
_functions = fragment.functions,
65-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
65+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
6666
_mixins = fragment.mixins,
67-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
67+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
6868
_typedefs = fragment.typeAliases,
69-
_variables = fragment.topLevelVariables.where(_isNotSynthetic).toList();
69+
_variables = fragment.topLevelVariables
70+
.where((f) => f.isOriginDeclaration)
71+
.toList();
7072

7173
/// Creates an [ElementWalker] which walks the child elements of a enum
7274
/// element.
7375
ElementWalker.forEnum(EnumFragmentImpl this.fragment)
74-
: _constructors = fragment.constructors.where(_isNotSynthetic).toList(),
76+
: _constructors = fragment.constructors
77+
.where((f) => f.isOriginDeclaration)
78+
.toList(),
7579
_functions = fragment.methods,
76-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
77-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
80+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
81+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
7882
_typeParameters = fragment.typeParameters,
79-
_variables = fragment.fields.where(_isNotSynthetic).toList();
83+
_variables = fragment.fields.where((f) => f.isOriginDeclaration).toList();
8084

8185
/// Creates an [ElementWalker] which walks the child elements of a compilation
8286
/// unit element.
@@ -89,18 +93,18 @@ class ElementWalker {
8993
/// element.
9094
ElementWalker.forExtension(ExtensionFragmentImpl this.fragment)
9195
: _functions = fragment.methods,
92-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
93-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
96+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
97+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
9498
_typeParameters = fragment.typeParameters,
95-
_variables = fragment.fields.where(_isNotSynthetic).toList();
99+
_variables = fragment.fields.where((f) => f.isOriginDeclaration).toList();
96100

97101
ElementWalker.forExtensionType(ExtensionTypeFragmentImpl this.fragment)
98102
: _constructors = fragment.constructors,
99103
_functions = fragment.methods,
100-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
101-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
104+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
105+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
102106
_typeParameters = fragment.typeParameters,
103-
_variables = fragment.fields.where(_isNotSynthetic).toList();
107+
_variables = fragment.fields.where((f) => f.isOriginDeclaration).toList();
104108

105109
/// Creates an [ElementWalker] which walks the child elements of a typedef
106110
/// element.
@@ -117,12 +121,14 @@ class ElementWalker {
117121
/// Creates an [ElementWalker] which walks the child elements of a mixin
118122
/// element.
119123
ElementWalker.forMixin(MixinFragmentImpl this.fragment)
120-
: _constructors = fragment.constructors.where(_isNotSynthetic).toList(),
124+
: _constructors = fragment.constructors
125+
.where((f) => f.isOriginDeclaration)
126+
.toList(),
121127
_functions = fragment.methods,
122-
_getters = fragment.getters.where(_isNotSynthetic).toList(),
123-
_setters = fragment.setters.where(_isNotSynthetic).toList(),
128+
_getters = fragment.getters.where((f) => f.isOriginDeclaration).toList(),
129+
_setters = fragment.setters.where((f) => f.isOriginDeclaration).toList(),
124130
_typeParameters = fragment.typeParameters,
125-
_variables = fragment.fields.where(_isNotSynthetic).toList();
131+
_variables = fragment.fields.where((f) => f.isOriginDeclaration).toList();
126132

127133
/// Creates an [ElementWalker] which walks the child elements of a parameter
128134
/// element.
@@ -229,6 +235,4 @@ class ElementWalker {
229235
check(_typeParameters, _typeParameterIndex);
230236
check(_variables, _variableIndex);
231237
}
232-
233-
static bool _isNotSynthetic(FragmentImpl e) => !e.isSynthetic;
234238
}

pkg/analyzer/lib/src/summary2/bundle_writer.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,6 +814,7 @@ class BundleWriter {
814814
void _writeUnitElement(LibraryFragmentImpl unitElement) {
815815
_writeResolutionOffset();
816816

817+
// ignore: deprecated_member_use_from_same_package
817818
_sink.writeBool(unitElement.isSynthetic);
818819

819820
_sink.writeList(unitElement.libraryImports, _writeLibraryImport);

pkg/analyzer/lib/src/summary2/element_builder.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@ class ElementBuilder {
189189
FragmentImpl? lastFragment,
190190
ClassFragmentImpl fragment,
191191
) {
192-
assert(!fragment.isSynthetic);
193192
libraryFragment.addClass(fragment);
194193

195194
if (fragment.isAugmentation && lastFragment is ClassFragmentImpl) {
@@ -222,7 +221,6 @@ class ElementBuilder {
222221
FragmentImpl? lastFragment,
223222
EnumFragmentImpl fragment,
224223
) {
225-
assert(!fragment.isSynthetic);
226224
libraryFragment.addEnum(fragment);
227225

228226
if (fragment.isAugmentation && lastFragment is EnumFragmentImpl) {
@@ -251,7 +249,6 @@ class ElementBuilder {
251249
FragmentImpl? lastFragment,
252250
ExtensionFragmentImpl fragment,
253251
) {
254-
assert(!fragment.isSynthetic);
255252
libraryFragment.addExtension(fragment);
256253

257254
if (fragment.isAugmentation && lastFragment is ExtensionFragmentImpl) {
@@ -279,7 +276,6 @@ class ElementBuilder {
279276
FragmentImpl? lastFragment,
280277
ExtensionTypeFragmentImpl fragment,
281278
) {
282-
assert(!fragment.isSynthetic);
283279
libraryFragment.addExtensionType(fragment);
284280

285281
if (fragment.isAugmentation && lastFragment is ExtensionTypeFragmentImpl) {
@@ -600,7 +596,6 @@ class ElementBuilder {
600596
FragmentImpl? lastFragment,
601597
MixinFragmentImpl fragment,
602598
) {
603-
assert(!fragment.isSynthetic);
604599
libraryFragment.addMixin(fragment);
605600
if (fragment.isAugmentation && lastFragment is MixinFragmentImpl) {
606601
lastFragment.addFragment(fragment);
@@ -766,7 +761,7 @@ class ElementBuilder {
766761
FragmentImpl? lastFragment,
767762
TopLevelVariableFragmentImpl variableFragment,
768763
) {
769-
assert(!variableFragment.isSynthetic);
764+
assert(variableFragment.isOriginDeclaration);
770765
libraryFragment.addTopLevelVariable(variableFragment);
771766

772767
var lastVariableElement = _topLevelVariableElement(lastFragment);
@@ -1467,6 +1462,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
14671462
}
14681463

14691464
fragment.hasImplicitType = node.type == null && node.parameters == null;
1465+
fragment.isOriginDeclaration = true;
14701466
fragment.metadata = _buildMetadata(node.metadata);
14711467

14721468
node.declaredFragment = fragment;
@@ -1608,6 +1604,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
16081604

16091605
fragment.isExplicitlyCovariant = node.covariantKeyword != null;
16101606
fragment.isFinal = node.isFinal;
1607+
fragment.isOriginDeclaration = true;
16111608
fragment.metadata = _buildMetadata(node.metadata);
16121609

16131610
node.declaredFragment = fragment;
@@ -1913,6 +1910,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
19131910
fragment.hasImplicitType = node.type == null;
19141911
fragment.isExplicitlyCovariant = node.covariantKeyword != null;
19151912
fragment.isFinal = node.isFinal;
1913+
fragment.isOriginDeclaration = true;
19161914
fragment.metadata = _buildMetadata(node.metadata);
19171915

19181916
node.declaredFragment = fragment;
@@ -1938,6 +1936,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
19381936
}
19391937

19401938
fragment.hasImplicitType = node.type == null && node.parameters == null;
1939+
fragment.isOriginDeclaration = true;
19411940
fragment.metadata = _buildMetadata(node.metadata);
19421941

19431942
node.declaredFragment = fragment;
@@ -2082,6 +2081,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
20822081
privateName: null,
20832082
)
20842083
..isDeclaring = true
2084+
..isOriginDeclaration = true
20852085
..hasImplicitType = true;
20862086
formalParameterFragment.metadata = _buildMetadata(formalParameter.metadata);
20872087
formalParameter.declaredFragment = formalParameterFragment;

0 commit comments

Comments
 (0)