Skip to content

Commit 1a1d7da

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Use InvalidInitializer
Change-Id: Id4e1df17a14955b58e8db50abefb3ac4bbf1eaf8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/464686 Reviewed-by: Jens Johansen <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent 4338105 commit 1a1d7da

File tree

147 files changed

+598
-690
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+598
-690
lines changed

pkg/front_end/lib/src/fragment/constructor/encoding.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,6 @@ class _ExtensionTypeInitializerToStatementConverter
825825
}
826826

827827
@override
828-
// Coverage-ignore(suite): Not run.
829828
void visitInvalidInitializer(InvalidInitializer node) {
830829
statements.add(
831830
new ExpressionStatement(

pkg/front_end/lib/src/kernel/body_builder.dart

Lines changed: 75 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)