Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Unified Diff: pkg/compiler/lib/src/resolution/send_structure.dart

Issue 1160153002: Support implicit super constructor invocation in SemanticDeclarationVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
« no previous file with comments | « pkg/compiler/lib/src/resolution/send_resolver.dart ('k') | tests/compiler/dart2js/semantic_visitor_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698