@@ -85,6 +85,7 @@ import '../problems.dart'
85
85
import '../scope.dart' ;
86
86
import '../source/diet_parser.dart' ;
87
87
import '../source/scope_listener.dart' show JumpTargetKind, ScopeListener;
88
+ import '../source/source_class_builder.dart' ;
88
89
import '../source/source_constructor_builder.dart' ;
89
90
import '../source/source_enum_builder.dart' ;
90
91
import '../source/source_factory_builder.dart' ;
@@ -139,8 +140,13 @@ class BodyBuilder extends ScopeListener<JumpTarget>
139
140
/// if any.
140
141
final DeclarationBuilder ? declarationBuilder;
141
142
142
- /// The class or mixin declaration in which [member] is declared, if any.
143
- final ClassBuilder ? classBuilder;
143
+ /// The source class or mixin declaration in which [member] is declared, if
144
+ /// any.
145
+ ///
146
+ /// If [member] is a synthesized member for expression evaluation the
147
+ /// enclosing declaration might be a [DillClassBuilder] . This can be accessed
148
+ /// through [declarationBuilder] .
149
+ final SourceClassBuilder ? sourceClassBuilder;
144
150
145
151
final ClassHierarchy hierarchy;
146
152
@@ -342,8 +348,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
342
348
required this .uri,
343
349
required this .typeInferrer})
344
350
: forest = const Forest (),
345
- classBuilder =
346
- declarationBuilder is ClassBuilder ? declarationBuilder : null ,
351
+ sourceClassBuilder = declarationBuilder is SourceClassBuilder
352
+ ? declarationBuilder
353
+ : null ,
347
354
enableNative = libraryBuilder.loader.target.backendTarget
348
355
.enableNative (libraryBuilder.importUri),
349
356
stringExpectedAfterNative = libraryBuilder
@@ -352,8 +359,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
352
359
libraryBuilder.importUri.scheme == 'dart' &&
353
360
(libraryBuilder.importUri.path == "_builtin" ||
354
361
libraryBuilder.importUri.path == "ui" ),
355
- needsImplicitSuperInitializer = declarationBuilder is ClassBuilder &&
356
- coreTypes.objectClass != declarationBuilder.cls,
362
+ needsImplicitSuperInitializer =
363
+ declarationBuilder is SourceClassBuilder &&
364
+ coreTypes.objectClass != declarationBuilder.cls,
357
365
super (enclosingScope) {
358
366
formalParameterScope? .forEach ((String name, Builder builder) {
359
367
if (builder is VariableBuilder ) {
@@ -1763,7 +1771,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
1763
1771
fasta.messageConstructorNotSync, body! .fileOffset, noLength)));
1764
1772
}
1765
1773
if (libraryBuilder.enableEnhancedEnumsInLibrary &&
1766
- classBuilder is SourceEnumBuilder &&
1774
+ sourceClassBuilder is SourceEnumBuilder &&
1767
1775
constructor.initializers.isNotEmpty &&
1768
1776
constructor.initializers.last is RedirectingInitializer ) {
1769
1777
RedirectingInitializer redirectingInitializer =
@@ -1806,7 +1814,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
1806
1814
positionalArguments = positionalSuperParametersAsArguments;
1807
1815
namedArguments = namedSuperParametersAsArguments;
1808
1816
}
1809
- if (classBuilder is SourceEnumBuilder ) {
1817
+ if (sourceClassBuilder is SourceEnumBuilder ) {
1810
1818
assert (constructor.function.positionalParameters.length >= 2 &&
1811
1819
constructor.function.positionalParameters[0 ].name == "index" &&
1812
1820
constructor.function.positionalParameters[1 ].name == "name" );
@@ -1826,7 +1834,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
1826
1834
checkArgumentsForFunction (superTarget.function, arguments,
1827
1835
builder.charOffset, const < TypeParameter > []) !=
1828
1836
null ) {
1829
- String superclass = classBuilder! .supertypeBuilder! .fullNameForErrors;
1837
+ String superclass =
1838
+ sourceClassBuilder! .supertypeBuilder! .fullNameForErrors;
1830
1839
int length = constructor.name.text.length;
1831
1840
if (length == 0 ) {
1832
1841
length = (constructor.parent as Class ).name.length;
@@ -2563,15 +2572,15 @@ class BodyBuilder extends ScopeListener<JumpTarget>
2563
2572
}
2564
2573
2565
2574
@override
2566
- Member ? lookupInstanceMember (Name name,
2567
- { bool isSetter : false , bool isSuper : false }) {
2568
- return classBuilder ! . lookupInstanceMember ( hierarchy, name,
2569
- isSetter: isSetter, isSuper: isSuper );
2575
+ Member ? lookupSuperMember (Name name, { bool isSetter : false }) {
2576
+ return (declarationBuilder as ClassBuilder ). lookupInstanceMember (
2577
+ hierarchy, name,
2578
+ isSetter: isSetter, isSuper: true );
2570
2579
}
2571
2580
2572
2581
@override
2573
2582
Constructor ? lookupConstructor (Name name, {bool isSuper: false }) {
2574
- return classBuilder ! .lookupConstructor (name, isSuper: isSuper);
2583
+ return sourceClassBuilder ! .lookupConstructor (name, isSuper: isSuper);
2575
2584
}
2576
2585
2577
2586
@override
@@ -2650,9 +2659,9 @@ class BodyBuilder extends ScopeListener<JumpTarget>
2650
2659
Builder ? declaration = scope.lookup (name, charOffset, uri);
2651
2660
if (declaration == null &&
2652
2661
prefix == null &&
2653
- (classBuilder ? .isPatch ?? false )) {
2662
+ (sourceClassBuilder ? .isPatch ?? false )) {
2654
2663
// The scope of a patched method includes the origin class.
2655
- declaration = classBuilder ! .origin
2664
+ declaration = sourceClassBuilder ! .origin
2656
2665
.findStaticBuilder (name, charOffset, uri, libraryBuilder);
2657
2666
}
2658
2667
if (declaration != null &&
@@ -3120,8 +3129,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
3120
3129
constantContext = member.isConst
3121
3130
? ConstantContext .inferred
3122
3131
: ! member.isStatic &&
3123
- classBuilder != null &&
3124
- classBuilder ! .declaresConstConstructor
3132
+ sourceClassBuilder != null &&
3133
+ sourceClassBuilder ! .declaresConstConstructor
3125
3134
? ConstantContext .required
3126
3135
: ConstantContext .none;
3127
3136
if (member is SourceFieldBuilder ) {
@@ -3155,8 +3164,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
3155
3164
constantContext = member.isConst
3156
3165
? ConstantContext .inferred
3157
3166
: ! member.isStatic &&
3158
- classBuilder != null &&
3159
- classBuilder ! .declaresConstConstructor
3167
+ sourceClassBuilder != null &&
3168
+ sourceClassBuilder ! .declaresConstConstructor
3160
3169
? ConstantContext .required
3161
3170
: ConstantContext .none;
3162
3171
if (constantContext == ConstantContext .inferred) {
@@ -6968,7 +6977,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
6968
6977
Initializer buildRedirectingInitializer (
6969
6978
Constructor constructor, Arguments arguments,
6970
6979
[int charOffset = - 1 ]) {
6971
- if (classBuilder !
6980
+ if (sourceClassBuilder !
6972
6981
.checkConstructorCyclic (member.name! , constructor.name.text)) {
6973
6982
int length = constructor.name.text.length;
6974
6983
if (length == 0 ) length = "this" .length;
@@ -7188,7 +7197,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
7188
7197
offset,
7189
7198
name.text.length);
7190
7199
}
7191
- Member ? target = lookupInstanceMember (name, isSuper : true );
7200
+ Member ? target = lookupSuperMember (name);
7192
7201
7193
7202
if (target == null || (target is Procedure && ! target.isAccessor)) {
7194
7203
if (target == null ) {
@@ -7317,7 +7326,7 @@ class BodyBuilder extends ScopeListener<JumpTarget>
7317
7326
String constructorNameForDiagnostics (String name,
7318
7327
{String ? className, bool isSuper: false }) {
7319
7328
if (className == null ) {
7320
- Class cls = classBuilder ! .cls;
7329
+ Class cls = sourceClassBuilder ! .cls;
7321
7330
if (isSuper) {
7322
7331
cls = cls.superclass! ;
7323
7332
while (cls.isMixinApplication) {
0 commit comments