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 01706664d84..c477cfd022c 100644 --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart @@ -2008,8 +2008,7 @@ class BodyBuilder extends ScopeListener push(deprecated_buildCompileTimeError( "Not a constant expression.", operator.charOffset)); } else { - push(new ShadowAsExpression(expression, type) - ..fileOffset = offsetForToken(operator)); + push(forest.asExpression(expression, type, operator)); } } diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart index 566ee452756..8a34d1d9254 100644 --- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart +++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart @@ -28,6 +28,7 @@ import '../scanner.dart' show Token; import 'kernel_shadow_ast.dart' show ShadowArguments, + ShadowAsExpression, ShadowBoolLiteral, ShadowCheckLibraryIsLoaded, ShadowDoubleLiteral, @@ -154,6 +155,12 @@ class Fangorn extends Forest { return new ShadowCheckLibraryIsLoaded(dependency); } + @override + Expression asExpression(Expression expression, covariant type, Token token) { + return new ShadowAsExpression(expression, type) + ..fileOffset = offsetForToken(token); + } + @override bool isErroneousNode(TreeNode node) { if (node is ExpressionStatement) { diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart index c9a526ccb70..8b7327fce42 100644 --- a/pkg/front_end/lib/src/fasta/kernel/forest.dart +++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart @@ -54,6 +54,9 @@ abstract class Forest { Expression checkLibraryIsLoaded(covariant dependency); + Expression asExpression( + Expression expression, covariant type, Location location); + bool isErroneousNode(covariant node); // TODO(ahe): Remove this method when all users are moved here.