@@ -1103,7 +1103,6 @@ class BodyBuilderImpl extends StackListenerImpl
11031103 fileOffset: formal.fileOffset,
11041104 length: formal.name.length,
11051105 ),
1106- formal.fileOffset,
11071106 ),
11081107 ];
11091108 } else {
@@ -1211,7 +1210,7 @@ class BodyBuilderImpl extends StackListenerImpl
12111210 ];
12121211 } else {
12131212 Expression value = toValue (node);
1214- if (! forest. isThrow (node) ) {
1213+ if (value is ! InvalidExpression ) {
12151214 // TODO(johnniwinther): Derive the message position from the [node]
12161215 // and not the [value]. For instance this occurs for `super()?.foo()`
12171216 // in an initializer list, pointing to `foo` as expecting an
@@ -1226,10 +1225,7 @@ class BodyBuilderImpl extends StackListenerImpl
12261225 );
12271226 }
12281227 initializers = < Initializer > [
1229- // TODO(johnniwinther): This should probably be [value] instead of
1230- // [node].
1231- // TODO(jensj): Does this offset make sense?
1232- buildInvalidInitializer (node as Expression , endToken.next! .charOffset),
1228+ buildInvalidInitializer (value as InvalidExpression ),
12331229 ];
12341230 }
12351231
@@ -2344,7 +2340,7 @@ class BodyBuilderImpl extends StackListenerImpl
23442340 }
23452341
23462342 @override
2347- Expression buildUnresolvedError (
2343+ InvalidExpression buildUnresolvedError (
23482344 String name,
23492345 int charOffset, {
23502346 bool isSuper = false ,
@@ -2418,8 +2414,7 @@ class BodyBuilderImpl extends StackListenerImpl
24182414 );
24192415 }
24202416
2421- @override
2422- Expression buildProblemFromLocatedMessage (LocatedMessage message) {
2417+ InvalidExpression _buildProblemFromLocatedMessage (LocatedMessage message) {
24232418 return buildProblem (
24242419 message: message.messageObject,
24252420 fileUri: uri,
@@ -6626,7 +6621,6 @@ class BodyBuilderImpl extends StackListenerImpl
66266621 }
66276622
66286623 String ? errorName;
6629- LocatedMessage ? message;
66306624
66316625 if (typeDeclarationBuilder is TypeAliasBuilder ) {
66326626 errorName = debugName (typeDeclarationBuilder.name, name);
@@ -6673,15 +6667,18 @@ class BodyBuilderImpl extends StackListenerImpl
66736667 // Not found. Reported below.
66746668 target = null ;
66756669 } else if (result.isInvalidLookup) {
6676- message = LookupResult .createDuplicateMessage (
6677- result,
6678- enclosingDeclaration: typeDeclarationBuilder,
6679- name: name,
6680- fileUri: uri,
6681- fileOffset: charOffset,
6682- length: noLength,
6670+ return new ErroneousConstructorResolutionResult (
6671+ errorExpression: _buildProblemFromLocatedMessage (
6672+ LookupResult .createDuplicateMessage (
6673+ result,
6674+ enclosingDeclaration: typeDeclarationBuilder,
6675+ name: name,
6676+ fileUri: uri,
6677+ fileOffset: charOffset,
6678+ length: noLength,
6679+ ),
6680+ ),
66836681 );
6684- target = null ;
66856682 } else {
66866683 MemberBuilder ? constructorBuilder = result.getable! ;
66876684 if (constructorBuilder is ConstructorBuilder ) {
@@ -6718,18 +6715,12 @@ class BodyBuilderImpl extends StackListenerImpl
67186715 ),
67196716 );
67206717 } else {
6721- if (message != null ) {
6722- return new ErroneousConstructorResolutionResult (
6723- errorExpression: buildProblemFromLocatedMessage (message),
6724- );
6725- } else {
6726- return new UnresolvedConstructorResolutionResult (
6727- helper: this ,
6728- errorName: errorName,
6729- charOffset: nameLastToken.charOffset,
6730- unresolvedKind: unresolvedKind,
6731- );
6732- }
6718+ return new UnresolvedConstructorResolutionResult (
6719+ helper: this ,
6720+ errorName: errorName,
6721+ charOffset: nameLastToken.charOffset,
6722+ unresolvedKind: unresolvedKind,
6723+ );
67336724 }
67346725 case ExtensionTypeDeclarationBuilder ():
67356726 // TODO(johnniwinther): Add shared interface between
@@ -6739,13 +6730,17 @@ class BodyBuilderImpl extends StackListenerImpl
67396730 MemberBuilder ? constructorBuilder = result? .getable;
67406731 if (result != null && result.isInvalidLookup) {
67416732 // Coverage-ignore-block(suite): Not run.
6742- message = LookupResult .createDuplicateMessage (
6743- result,
6744- enclosingDeclaration: typeDeclarationBuilder,
6745- name: name,
6746- fileUri: uri,
6747- fileOffset: charOffset,
6748- length: noLength,
6733+ return new ErroneousConstructorResolutionResult (
6734+ errorExpression: _buildProblemFromLocatedMessage (
6735+ LookupResult .createDuplicateMessage (
6736+ result,
6737+ enclosingDeclaration: typeDeclarationBuilder,
6738+ name: name,
6739+ fileUri: uri,
6740+ fileOffset: charOffset,
6741+ length: noLength,
6742+ ),
6743+ ),
67496744 );
67506745 } else if (constructorBuilder == null ) {
67516746 // Not found. Reported below.
@@ -6764,19 +6759,12 @@ class BodyBuilderImpl extends StackListenerImpl
67646759 ),
67656760 );
67666761 }
6767- if (message != null ) {
6768- // Coverage-ignore-block(suite): Not run.
6769- return new ErroneousConstructorResolutionResult (
6770- errorExpression: buildProblemFromLocatedMessage (message),
6771- );
6772- } else {
6773- return new UnresolvedConstructorResolutionResult (
6774- helper: this ,
6775- errorName: errorName,
6776- charOffset: nameLastToken.charOffset,
6777- unresolvedKind: unresolvedKind,
6778- );
6779- }
6762+ return new UnresolvedConstructorResolutionResult (
6763+ helper: this ,
6764+ errorName: errorName,
6765+ charOffset: nameLastToken.charOffset,
6766+ unresolvedKind: unresolvedKind,
6767+ );
67806768 case InvalidBuilder ():
67816769 // Coverage-ignore(suite): Not run.
67826770 LocatedMessage message = typeDeclarationBuilder.message;
@@ -7005,13 +6993,17 @@ class BodyBuilderImpl extends StackListenerImpl
70056993 MemberBuilder ? constructorBuilder = result? .getable;
70066994 Member ? target;
70076995 if (result != null && result.isInvalidLookup) {
7008- message = LookupResult .createDuplicateMessage (
7009- result,
7010- enclosingDeclaration: typeDeclarationBuilder,
7011- name: name,
7012- fileUri: uri,
7013- fileOffset: charOffset,
7014- length: noLength,
6996+ return new ErroneousConstructorResolutionResult (
6997+ errorExpression: _buildProblemFromLocatedMessage (
6998+ LookupResult .createDuplicateMessage (
6999+ result,
7000+ enclosingDeclaration: typeDeclarationBuilder,
7001+ name: name,
7002+ fileUri: uri,
7003+ fileOffset: charOffset,
7004+ length: noLength,
7005+ ),
7006+ ),
70157007 );
70167008 } else if (constructorBuilder == null ) {
70177009 // Not found. Reported below.
@@ -7078,13 +7070,17 @@ class BodyBuilderImpl extends StackListenerImpl
70787070 Member ? target;
70797071 if (result != null && result.isInvalidLookup) {
70807072 // Coverage-ignore-block(suite): Not run.
7081- message = LookupResult .createDuplicateMessage (
7082- result,
7083- enclosingDeclaration: typeDeclarationBuilder,
7084- name: name,
7085- fileUri: uri,
7086- fileOffset: charOffset,
7087- length: noLength,
7073+ return new ErroneousConstructorResolutionResult (
7074+ errorExpression: _buildProblemFromLocatedMessage (
7075+ LookupResult .createDuplicateMessage (
7076+ result,
7077+ enclosingDeclaration: typeDeclarationBuilder,
7078+ name: name,
7079+ fileUri: uri,
7080+ fileOffset: charOffset,
7081+ length: noLength,
7082+ ),
7083+ ),
70887084 );
70897085 } else if (constructorBuilder == null ) {
70907086 // Not found. Reported below.
@@ -7129,18 +7125,12 @@ class BodyBuilderImpl extends StackListenerImpl
71297125 name,
71307126 );
71317127 }
7132- if (message != null ) {
7133- return new ErroneousConstructorResolutionResult (
7134- errorExpression: buildProblemFromLocatedMessage (message),
7135- );
7136- } else {
7137- return new UnresolvedConstructorResolutionResult (
7138- helper: this ,
7139- errorName: errorName,
7140- charOffset: nameLastToken.charOffset,
7141- unresolvedKind: unresolvedKind,
7142- );
7143- }
7128+ return new UnresolvedConstructorResolutionResult (
7129+ helper: this ,
7130+ errorName: errorName,
7131+ charOffset: nameLastToken.charOffset,
7132+ unresolvedKind: unresolvedKind,
7133+ );
71447134 }
71457135
71467136 @override
@@ -9770,14 +9760,10 @@ class BodyBuilderImpl extends StackListenerImpl
97709760 }
97719761
97729762 @override
9773- Initializer buildInvalidInitializer (
9774- Expression expression, [
9775- int charOffset = - 1 ,
9776- ]) {
9763+ Initializer buildInvalidInitializer (InvalidExpression expression) {
97779764 _needsImplicitSuperInitializer = false ;
9778- return new ShadowInvalidInitializer (
9779- new VariableDeclaration .forValue (expression),
9780- )..fileOffset = charOffset;
9765+ return new InvalidInitializer (expression.message)
9766+ ..fileOffset = expression.fileOffset;
97819767 }
97829768
97839769 Initializer buildDuplicatedInitializer (
@@ -9839,7 +9825,6 @@ class BodyBuilderImpl extends StackListenerImpl
98399825 fileOffset: fieldNameOffset,
98409826 length: name.length,
98419827 ),
9842- fieldNameOffset,
98439828 ),
98449829 ];
98459830 } else if (builder is SourcePropertyBuilder &&
@@ -9862,7 +9847,6 @@ class BodyBuilderImpl extends StackListenerImpl
98629847 )
98639848 .plain,
98649849 ),
9865- fieldNameOffset,
98669850 ),
98679851 ];
98689852 }
@@ -9889,7 +9873,6 @@ class BodyBuilderImpl extends StackListenerImpl
98899873 fileOffset: fieldNameOffset,
98909874 length: name.length,
98919875 ),
9892- fieldNameOffset,
98939876 ),
98949877 ];
98959878 } else if (builder.hasExternalField) {
@@ -9901,7 +9884,6 @@ class BodyBuilderImpl extends StackListenerImpl
99019884 fileOffset: fieldNameOffset,
99029885 length: name.length,
99039886 ),
9904- fieldNameOffset,
99059887 ),
99069888 ];
99079889 } else if (builder.isFinal && builder.hasInitializer) {
@@ -9970,7 +9952,6 @@ class BodyBuilderImpl extends StackListenerImpl
99709952 fileOffset: fieldNameOffset,
99719953 length: name.length,
99729954 ),
9973- fieldNameOffset,
99749955 ),
99759956 ];
99769957 }
@@ -10010,12 +9991,13 @@ class BodyBuilderImpl extends StackListenerImpl
100109991 length = "this" .length;
100119992 }
100129993 String fullName = constructorNameForDiagnostics (name.text);
10013- LocatedMessage message = cfe.codeConstructorNotFound
10014- .withArgumentsOld (fullName)
10015- .withLocation (uri, fileOffset, length);
100169994 return buildInvalidInitializer (
10017- buildProblemFromLocatedMessage (message),
10018- fileOffset,
9995+ buildProblem (
9996+ message: cfe.codeConstructorNotFound.withArgumentsOld (fullName),
9997+ fileUri: uri,
9998+ fileOffset: fileOffset,
9999+ length: length,
10000+ ),
1001910001 );
1002010002 } else {
1002110003 if (_context.isConstructorCyclic (name.text)) {
0 commit comments