| Index: pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| index fcc7bd58161686f211e8717a4f3cfe1eee283041..a934954445371eb8f7b3bde7c614775dc4726bd2 100644
|
| --- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| @@ -392,11 +392,12 @@ class AstBuilder extends ScopeListener {
|
|
|
| void handleNoInitializers() {
|
| debugEvent("NoInitializers");
|
| + push(NullValue.ConstructorInitializers);
|
| }
|
|
|
| void endInitializers(int count, Token beginToken, Token endToken) {
|
| debugEvent("Initializers");
|
| - popList(count);
|
| + push(popList(count));
|
| }
|
|
|
| void endVariableInitializer(Token assignmentOperator) {
|
| @@ -1407,7 +1408,7 @@ class AstBuilder extends ScopeListener {
|
| debugEvent("Method");
|
| FunctionBody body = pop();
|
| ConstructorName redirectedConstructor = null; // TODO(paulberry)
|
| - List<ConstructorInitializer> initializers = null; // TODO(paulberry)
|
| + List<Object> initializerObjects = pop() ?? const [];
|
| Token separator = null; // TODO(paulberry)
|
| FormalParameterList parameters = pop();
|
| TypeParameterList typeParameters = pop(); // TODO(paulberry)
|
| @@ -1417,6 +1418,30 @@ class AstBuilder extends ScopeListener {
|
| List<Annotation> metadata = pop();
|
| Comment comment = pop();
|
|
|
| + var initializers = <ConstructorInitializer>[];
|
| + for (Object initializerObject in initializerObjects) {
|
| + if (initializerObject is AssignmentExpression) {
|
| + analyzer.Token thisKeyword;
|
| + analyzer.Token period;
|
| + SimpleIdentifier fieldName;
|
| + Expression left = initializerObject.leftHandSide;
|
| + if (left is PropertyAccess) {
|
| + var thisExpression = left.target as ThisExpression;
|
| + thisKeyword = thisExpression.thisKeyword;
|
| + period = left.operator;
|
| + fieldName = left.propertyName;
|
| + } else {
|
| + fieldName = left as SimpleIdentifier;
|
| + }
|
| + initializers.add(ast.constructorFieldInitializer(
|
| + thisKeyword,
|
| + period,
|
| + fieldName,
|
| + initializerObject.operator,
|
| + initializerObject.rightHandSide));
|
| + }
|
| + }
|
| +
|
| void constructor(SimpleIdentifier returnType, analyzer.Token period,
|
| SimpleIdentifier name) {
|
| push(ast.constructorDeclaration(
|
|
|