| Index: pkg/compiler/lib/src/resolution/send_structure.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/send_structure.dart b/pkg/compiler/lib/src/resolution/send_structure.dart
|
| index bae22a96cc2a3de88fb02e3a0c14f93f900931cf..b5d0f718c8c5a82a24e34740b08f8578f1156632 100644
|
| --- a/pkg/compiler/lib/src/resolution/send_structure.dart
|
| +++ b/pkg/compiler/lib/src/resolution/send_structure.dart
|
| @@ -2537,46 +2537,76 @@ class ConstantVariableStructure<R, A>
|
| }
|
| }
|
|
|
| +class InitializersStructure<R, A> {
|
| + final List<InitializerStructure<R, A>> initializers;
|
| +
|
| + InitializersStructure(this.initializers);
|
| +}
|
| +
|
| abstract class InitializerStructure<R, A> {
|
| - R dispatch(SemanticDeclarationVisitor<R, A> visitor, Send node, A arg);
|
| + R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg);
|
|
|
| - bool get isSuperConstructorInvoke => false;
|
| + bool get isConstructorInvoke => false;
|
| }
|
|
|
| class FieldInitializerStructure<R, A> extends InitializerStructure<R, A> {
|
| + final Send node;
|
| final FieldElement field;
|
|
|
| - FieldInitializerStructure(this.field);
|
| + FieldInitializerStructure(this.node, this.field);
|
|
|
| - R dispatch(SemanticDeclarationVisitor<R, A> visitor, Send node, A arg) {
|
| + R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
|
| return visitor.visitFieldInitializer(
|
| node, field, node.arguments.single, arg);
|
| }
|
| }
|
|
|
| class SuperConstructorInvokeStructure<R, A> extends InitializerStructure<R, A> {
|
| + final Send node;
|
| final ConstructorElement constructor;
|
| final InterfaceType type;
|
| - final Selector selector;
|
| + final CallStructure callStructure;
|
|
|
| - SuperConstructorInvokeStructure(this.constructor, this.type, this.selector);
|
| + SuperConstructorInvokeStructure(
|
| + this.node, this.constructor, this.type, this.callStructure);
|
|
|
| - R dispatch(SemanticDeclarationVisitor<R, A> visitor, Send node, A arg) {
|
| + R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
|
| return visitor.visitSuperConstructorInvoke(
|
| - node, constructor, type, node.argumentsNode, selector, arg);
|
| + node, constructor, type, node.argumentsNode, callStructure, arg);
|
| }
|
|
|
| - bool get isSuperConstructorInvoke => true;
|
| + bool get isConstructorInvoke => true;
|
| +}
|
| +
|
| +class ImplicitSuperConstructorInvokeStructure<R, A>
|
| + extends InitializerStructure<R, A> {
|
| + final FunctionExpression node;
|
| + final ConstructorElement constructor;
|
| + final InterfaceType type;
|
| +
|
| + ImplicitSuperConstructorInvokeStructure(
|
| + this.node, this.constructor, this.type);
|
| +
|
| + R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
|
| + return visitor.visitImplicitSuperConstructorInvoke(
|
| + node, constructor, type, arg);
|
| + }
|
| +
|
| + bool get isConstructorInvoke => true;
|
| }
|
|
|
| class ThisConstructorInvokeStructure<R, A> extends InitializerStructure<R, A> {
|
| + final Send node;
|
| final ConstructorElement constructor;
|
| - final Selector selector;
|
| + final CallStructure callStructure;
|
|
|
| - ThisConstructorInvokeStructure(this.constructor, this.selector);
|
| + ThisConstructorInvokeStructure(
|
| + this.node, this.constructor, this.callStructure);
|
|
|
| - R dispatch(SemanticDeclarationVisitor<R, A> visitor, Send node, A arg) {
|
| + R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
|
| return visitor.visitThisConstructorInvoke(
|
| - node, constructor, node.argumentsNode, selector, arg);
|
| + node, constructor, node.argumentsNode, callStructure, arg);
|
| }
|
| +
|
| + bool get isConstructorInvoke => true;
|
| }
|
|
|