| Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| 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 633198a1025d6c468b9e5d079f054b3e7a298e36..258344083f6f9af9c13902181890308a3d8a739b 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| @@ -1546,8 +1546,13 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| debugEvent("AsOperator");
|
| DartType type = pop();
|
| Expression expression = popForValue();
|
| - push(new KernelAsExpression(expression, type)
|
| - ..fileOffset = offsetForToken(operator));
|
| + if (constantExpressionRequired) {
|
| + push(buildCompileTimeError(
|
| + "Not a constant expression.", operator.charOffset));
|
| + } else {
|
| + push(new KernelAsExpression(expression, type)
|
| + ..fileOffset = offsetForToken(operator));
|
| + }
|
| }
|
|
|
| @override
|
| @@ -1565,7 +1570,12 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| typePromoter.handleIsCheck(isExpression, isInverted, operand.variable,
|
| type, functionNestingLevel);
|
| }
|
| - push(isExpression);
|
| + if (constantExpressionRequired) {
|
| + push(buildCompileTimeError(
|
| + "Not a constant expression.", operator.charOffset));
|
| + } else {
|
| + push(isExpression);
|
| + }
|
| }
|
|
|
| @override
|
| @@ -2908,6 +2918,10 @@ class DelayedAssignment extends ContextAccessor {
|
| }
|
|
|
| Expression handleAssignment(bool voidContext) {
|
| + if (helper.constantExpressionRequired) {
|
| + return helper.buildCompileTimeError(
|
| + "Not a constant expression.", offsetForToken(token));
|
| + }
|
| if (identical("=", assignmentOperator)) {
|
| return accessor.buildAssignment(value, voidContext: voidContext);
|
| } else if (identical("+=", assignmentOperator)) {
|
|
|