Chromium Code Reviews| 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 3cbbfca30490db35e6cf95120452770b90bac24a..0cadc50a1e8b97b2555e726853d3baf6e74e96c1 100644 |
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
| @@ -236,13 +236,16 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| } |
| Block popBlock(int count) { |
| - List<Statement> statements = popList(count) ?? <Statement>[]; |
| + List<dynamic /*Statement | List<Statement>*/> statements = |
| + popList(count) ?? <Statement>[]; |
| List<Statement> copy; |
| for (int i = 0; i < statements.length; i++) { |
| var statement = statements[i]; |
| if (statement is List) { |
| copy ??= new List<Statement>.from(statements.getRange(0, i)); |
| - copy.addAll(statement); |
| + // TODO(sigmund): remove this assignment (issue #28651) |
| + Iterable subStatements = statement; |
| + copy.addAll(subStatements); |
| } else if (copy != null) { |
| copy.add(statement); |
| } |
| @@ -505,7 +508,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| void endSend(Token token) { |
| debugEvent("Send"); |
| Arguments arguments = pop(); |
| - List typeArguments = pop(); |
| + List<DartType> typeArguments = pop(); |
| Object receiver = pop(); |
| if (arguments != null && typeArguments != null) { |
| arguments.types.addAll(typeArguments); |
| @@ -993,7 +996,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| assert(conditionStatement is EmptyStatement); |
| } |
| List<VariableDeclaration> variables = <VariableDeclaration>[]; |
| - var variableOrExpression = pop(); |
| + dynamic variableOrExpression = pop(); |
| Statement begin; |
| if (variableOrExpression is BuilderAccessor) { |
| variableOrExpression = variableOrExpression.buildForEffect(); |
| @@ -1001,7 +1004,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| if (variableOrExpression is VariableDeclaration) { |
| variables.add(variableOrExpression); |
| } else if (variableOrExpression is List) { |
| - variables.addAll(variableOrExpression); |
| + // TODO(sigmund): remove this assignment (see issue #28651) |
| + Iterable vars = variableOrExpression; |
| + variables.addAll(vars); |
| } else if (variableOrExpression == null) { |
| // Do nothing. |
| } else if (variableOrExpression is Expression) { |
| @@ -1161,7 +1166,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| // TODO(ahe): The scope is wrong for return types of generic functions. |
| debugEvent("Type"); |
| List<DartType> arguments = pop(); |
| - var name = pop(); |
| + dynamic name = pop(); |
| if (name is List) { |
| if (name.length != 2) { |
| return internalError("Unexpected: $name.length"); |
| @@ -1275,7 +1280,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| ignore(Unhandled.Metadata); |
| VariableDeclaration variable; |
| if (!inCatchClause && functionNestingLevel == 0) { |
| - var builder = formalParameterScope.lookup(name.name); |
| + dynamic builder = formalParameterScope.lookup(name.name); |
| if (builder == null) { |
| return inputError("'${name.name}' isn't a field in this class.", |
| name.fileOffset); |
| @@ -1504,7 +1509,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| Identifier suffix = popIfNotNull(periodBeforeName); |
| Identifier identifier; |
| List<DartType> typeArguments = pop(); |
| - var type = pop(); |
| + dynamic type = pop(); |
| if (type is List) { |
| var prefix = type[0]; |
| identifier = type[1]; |
| @@ -1621,7 +1626,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| debugEvent("NewExpression"); |
| Arguments arguments = pop(); |
| String name = pop(); |
| - List typeArguments = pop(); |
| + List<DartType> typeArguments = pop(); |
| var type = pop(); |
| if (typeArguments != null) { |
| @@ -1636,7 +1641,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| if (b == null) { |
| // Not found. Reported below. |
| } else if (b.isConstructor) { |
| - if (type.cls.isAbstract) { |
| + if (type.isAbstract) { |
|
Siggi Cherem (dart-lang)
2017/02/10 19:20:31
FYI - I reverted this one change for now so I coul
|
| // TODO(ahe): Generate abstract instantiation error. |
| } else { |
| target = b.target; |
| @@ -1656,7 +1661,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| target, arguments, isConst: optional("const", token))); |
| return; |
| } else { |
| - errorName = debugName(type.cls.name, name); |
| + errorName = debugName(type.name, name); |
| } |
| } else { |
| errorName = debugName(getNodeName(type), name); |
| @@ -1743,7 +1748,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| exitLocalScope(); |
| } |
| FormalParameters formals = pop(); |
| - List typeParameters = pop(); |
| + List<TypeParameter> typeParameters = pop(); |
| push(formals.addToFunction(new FunctionNode(body, |
| typeParameters: typeParameters, asyncMarker: asyncModifier))); |
| functionNestingLevel--; |
| @@ -1769,7 +1774,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
| AsyncMarker asyncModifier = pop(); |
| exitLocalScope(); |
| FormalParameters formals = pop(); |
| - List typeParameters = pop(); |
| + List<TypeParameter> typeParameters = pop(); |
| FunctionNode function = formals.addToFunction(new FunctionNode(body, |
| typeParameters: typeParameters, asyncMarker: asyncModifier)); |
| push(new FunctionExpression(function)); |