mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:36:59 +00:00
Add constantExpressionRequired to BodyBuilder.
R=karlklose@google.com Review-Url: https://codereview.chromium.org/2769613002 .
This commit is contained in:
parent
819b226598
commit
84f1547975
|
@ -124,6 +124,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
|
||||
CloneVisitor cloner;
|
||||
|
||||
bool constantExpressionRequired = false;
|
||||
|
||||
BodyBuilder(
|
||||
KernelLibraryBuilder library,
|
||||
this.member,
|
||||
|
@ -1665,6 +1667,23 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
void beginNewExpression(Token token) {
|
||||
debugEvent("beginNewExpression");
|
||||
super.push(constantExpressionRequired);
|
||||
if (constantExpressionRequired) {
|
||||
addCompileTimeError(token.charOffset, "Not a constant expression.");
|
||||
}
|
||||
constantExpressionRequired = false;
|
||||
}
|
||||
|
||||
@override
|
||||
void beginConstExpression(Token token) {
|
||||
debugEvent("beginConstExpression");
|
||||
super.push(constantExpressionRequired);
|
||||
constantExpressionRequired = true;
|
||||
}
|
||||
|
||||
@override
|
||||
void endNewExpression(Token token) {
|
||||
debugEvent("NewExpression");
|
||||
|
@ -1673,6 +1692,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
String name = pop();
|
||||
List<DartType> typeArguments = pop();
|
||||
var type = pop();
|
||||
constantExpressionRequired = pop();
|
||||
|
||||
if (arguments == null) {
|
||||
push(buildCompileTimeError("No arguments.", nameToken.charOffset));
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
[ $compiler == dartk || $compiler == dartkp ]
|
||||
Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: MissingCompileTimeError
|
||||
Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t01: Crash
|
||||
Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t03: Crash
|
||||
Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t01: MissingCompileTimeError
|
||||
Language/Classes/Constructors/Constant_Constructors/non_final_instance_variable_t02: MissingCompileTimeError
|
||||
Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t02: MissingCompileTimeError
|
||||
|
@ -215,7 +214,6 @@ Language/Expressions/Instance_Creation/Const/accessibility_t04: MissingCompileTi
|
|||
Language/Expressions/Instance_Creation/Const/accessibility_t05: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/accessibility_t06: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/accessibility_t07: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/arguments_t01: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/arguments_t02: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/arguments_t03: MissingCompileTimeError
|
||||
Language/Expressions/Instance_Creation/Const/constant_constructor_name_t01: MissingCompileTimeError
|
||||
|
|
Loading…
Reference in a new issue