Wrap various synthetic kernel nodes
Change-Id: I51172dee3fc6f19166bab22f5aabf83a13864e31
Reviewed-on: https://dart-review.googlesource.com/c/85742
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index c1b7e65..41d8df8 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -96,7 +96,13 @@
import 'forest.dart' show Forest;
-import 'kernel_shadow_ast.dart' as shadow show SyntheticExpressionJudgment;
+import 'kernel_shadow_ast.dart' as shadow
+ show
+ InvalidConstructorInvocationJudgment,
+ InvalidWriteJudgment,
+ SyntheticExpressionJudgment,
+ UnresolvedTargetInvocationJudgment,
+ UnresolvedVariableAssignmentJudgment;
import 'redirecting_factory_body.dart'
show
@@ -3076,11 +3082,12 @@
isConst || constantContext != ConstantContext.none && target.isConst;
if ((isConst || constantContext == ConstantContext.inferred) &&
!target.isConst) {
- return new InvalidConstructorInvocationJudgment(
+ return wrapInvalidConstructorInvocation(
desugarSyntheticExpression(buildProblem(
fasta.messageNonConstConstructor, charOffset, charLength)),
target,
- arguments);
+ arguments,
+ charOffset);
}
ConstructorInvocation node = new ConstructorInvocation(
target, forest.castArguments(arguments),
@@ -3095,11 +3102,12 @@
constantContext != ConstantContext.none && procedure.isConst;
if ((isConst || constantContext == ConstantContext.inferred) &&
!procedure.isConst) {
- return new InvalidConstructorInvocationJudgment(
+ return wrapInvalidConstructorInvocation(
desugarSyntheticExpression(buildProblem(
fasta.messageNonConstFactory, charOffset, charLength)),
target,
- arguments);
+ arguments,
+ charOffset);
}
StaticInvocation node = FactoryConstructorInvocationJudgment(
target, forest.castArguments(arguments),
@@ -3339,7 +3347,7 @@
message = b.message.withLocation(uri, charOffset, noLength);
} else if (b.isConstructor) {
if (type.isAbstract) {
- return new InvalidConstructorInvocationJudgment(
+ return wrapInvalidConstructorInvocation(
evaluateArgumentsBefore(
arguments,
buildAbstractClassInstantiationError(
@@ -3348,8 +3356,8 @@
type.name,
nameToken.charOffset)),
target,
- arguments)
- ..fileOffset = charOffset;
+ arguments,
+ charOffset);
}
}
if (target is Constructor ||
@@ -3395,15 +3403,15 @@
}
errorName ??= name;
- return new UnresolvedTargetInvocationJudgment(
+ return wrapUnresolvedTargetInvocation(
throwNoSuchMethodError(
forest.literalNull(null)..fileOffset = charOffset,
errorName,
arguments,
nameLastToken.charOffset,
message: message),
- arguments)
- ..fileOffset = arguments.fileOffset;
+ arguments,
+ arguments.fileOffset);
}
@override
@@ -4764,6 +4772,36 @@
shadow.SyntheticExpressionJudgment shadowNode = node;
return shadowNode.desugared;
}
+
+ @override
+ Expression wrapInvalidConstructorInvocation(Expression desugared,
+ Member constructor, Arguments arguments, int charOffset) {
+ return new shadow.InvalidConstructorInvocationJudgment(
+ desugared, constructor, arguments)
+ ..fileOffset = charOffset;
+ }
+
+ @override
+ Expression wrapInvalidWrite(
+ Expression desugared, Expression expression, int charOffset) {
+ return new shadow.InvalidWriteJudgment(desugared, expression)
+ ..fileOffset = charOffset;
+ }
+
+ @override
+ Expression wrapUnresolvedTargetInvocation(
+ Expression desugared, Arguments arguments, int charOffset) {
+ return new shadow.UnresolvedTargetInvocationJudgment(desugared, arguments)
+ ..fileOffset = charOffset;
+ }
+
+ @override
+ Expression wrapUnresolvedVariableAssignment(
+ Expression desugared, bool isCompound, Expression rhs, int charOffset) {
+ return new shadow.UnresolvedVariableAssignmentJudgment(
+ desugared, isCompound, rhs)
+ ..fileOffset = charOffset;
+ }
}
class Operator {
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index 24b47b4..2a65568 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -67,11 +67,9 @@
DynamicType,
Expression,
Initializer,
- InvalidConstructorInvocationJudgment,
Member,
Name,
Procedure,
- UnresolvedTargetInvocationJudgment,
VariableDeclaration;
import 'kernel_builder.dart'
@@ -238,7 +236,7 @@
forest.argumentsSetTypeArguments(
arguments, helper.buildDartTypeArguments(typeArguments));
}
- return new InvalidConstructorInvocationJudgment(
+ return helper.wrapInvalidConstructorInvocation(
helper.throwNoSuchMethodError(
forest.literalNull(token),
helper.constructorNameForDiagnostics(name,
@@ -246,7 +244,8 @@
arguments,
nameToken.charOffset),
null,
- arguments);
+ arguments,
+ offsetForToken(token));
}
bool get isThisPropertyAccess => false;
@@ -769,10 +768,11 @@
forest.argumentsSetTypeArguments(
arguments, helper.buildDartTypeArguments(typeArguments));
}
- return new InvalidConstructorInvocationJudgment(
+ return helper.wrapInvalidConstructorInvocation(
helper.desugarSyntheticExpression(buildError(arguments)),
null,
- arguments);
+ arguments,
+ offsetForToken(token));
}
}
@@ -790,11 +790,11 @@
@override
Expression doInvocation(int charOffset, Arguments arguments) {
- return new UnresolvedTargetInvocationJudgment(
+ return helper.wrapUnresolvedTargetInvocation(
helper.desugarSyntheticExpression(
buildError(arguments, offset: charOffset)),
- arguments)
- ..fileOffset = arguments.fileOffset;
+ arguments,
+ arguments.fileOffset);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 282afc2..584d978 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -152,4 +152,16 @@
Declaration existing, String name, int charOffset);
Expression wrapSyntheticExpression(Expression node, int charOffset);
+
+ Expression wrapInvalidConstructorInvocation(Expression desugared,
+ Member constructor, Arguments arguments, int charOffset);
+
+ Expression wrapInvalidWrite(
+ Expression desugared, Expression expression, int charOffset);
+
+ Expression wrapUnresolvedTargetInvocation(
+ Expression desugared, Arguments arguments, int charOffset);
+
+ Expression wrapUnresolvedVariableAssignment(
+ Expression desugared, bool isCompound, Expression rhs, int charOffset);
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index 3c4e3ae..0f54b2d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -99,9 +99,7 @@
IfJudgment,
IllegalAssignmentJudgment,
IndexAssignmentJudgment,
- InvalidConstructorInvocationJudgment,
InvalidSuperInitializerJudgment,
- InvalidWriteJudgment,
ShadowInvalidFieldInitializer,
ShadowInvalidInitializer,
LabeledStatementJudgment,
@@ -120,8 +118,6 @@
SuperPropertyGetJudgment,
SwitchCaseJudgment,
SwitchStatementJudgment,
- UnresolvedTargetInvocationJudgment,
- UnresolvedVariableAssignmentJudgment,
VariableAssignmentJudgment,
VariableDeclarationJudgment,
VariableGetJudgment,
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
index fa1dd06..5952b75 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
@@ -89,7 +89,6 @@
IllegalAssignmentJudgment,
IndexAssignmentJudgment,
Initializer,
- InvalidWriteJudgment,
Let,
LoadLibraryTearOffJudgment,
Member,
@@ -108,7 +107,6 @@
SuperPropertySet,
TreeNode,
TypeParameter,
- UnresolvedVariableAssignmentJudgment,
VariableAssignmentJudgment,
VariableDeclaration,
VariableDeclarationJudgment,
@@ -1433,15 +1431,15 @@
sink.write(name.name);
}
- UnresolvedVariableAssignmentJudgment _buildUnresolvedVariableAssignment(
+ Expression _buildUnresolvedVariableAssignment(
bool isCompound, Expression value) {
- return new UnresolvedVariableAssignmentJudgment(
+ return helper.wrapUnresolvedVariableAssignment(
helper.desugarSyntheticExpression(buildError(
forest.arguments(<Expression>[value], token),
isSetter: true)),
isCompound,
- value)
- ..fileOffset = token.charOffset;
+ value,
+ token.charOffset);
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
index 9b2bf83..ae6fc90 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
@@ -412,11 +412,12 @@
}
Expression makeInvalidWrite(Expression value) {
- return new InvalidWriteJudgment(
+ return helper.wrapInvalidWrite(
helper.desugarSyntheticExpression(helper.buildProblem(
messageCannotAssignToParenthesizedExpression,
offsetForToken(token),
lengthForToken(token))),
- expression);
+ expression,
+ offsetForToken(token));
}
}