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

Unified Diff: pkg/compiler/lib/src/tree/nodes.dart

Issue 2567133002: Add support for the new function-type syntax. (Closed)
Patch Set: Fix comments. Created 4 years 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/tree/nodes.dart
diff --git a/pkg/compiler/lib/src/tree/nodes.dart b/pkg/compiler/lib/src/tree/nodes.dart
index 1e5f9ddbdd41e6e4b2cf65bb0957ce6282f35458..c392d77f166b85cf3f83ef424404d03f109cc753 100644
--- a/pkg/compiler/lib/src/tree/nodes.dart
+++ b/pkg/compiler/lib/src/tree/nodes.dart
@@ -511,8 +511,6 @@ class MixinApplication extends Node {
Token getEndToken() => mixins.getEndToken();
}
-// TODO(kasperl): Let this share some structure with the typedef for function
-// type aliases?
class NamedMixinApplication extends Node implements MixinApplication {
final Identifier name;
final NodeList typeParameters;
@@ -2854,6 +2852,8 @@ class Combinator extends Node {
}
class Typedef extends Node {
+ final bool isNewSyntax;
Siggi Cherem (dart-lang) 2016/12/12 23:20:40 I'd avoid terms like `new` and `old`, since in a f
+
final TypeAnnotation returnType;
final Identifier name;
final NodeList typeParameters;
@@ -2862,8 +2862,8 @@ class Typedef extends Node {
final Token typedefKeyword;
final Token endToken;
- Typedef(this.returnType, this.name, this.typeParameters, this.formals,
- this.typedefKeyword, this.endToken);
+ Typedef(this.isNewSyntax, this.returnType, this.name, this.typeParameters,
+ this.formals, this.typedefKeyword, this.endToken);
Typedef asTypedef() => this;
@@ -2890,6 +2890,42 @@ class Typedef extends Node {
Token getEndToken() => endToken;
}
+// TODO(floitsch): find a better name. "FunctionType" is already taken by
Siggi Cherem (dart-lang) 2016/12/12 23:20:40 how about FunctionTypeDeclaration ?
+// dart_types.dart. (We could use prefixes, but feels annoying.)
+class NewFunctionType extends Node {
+ final TypeAnnotation returnType;
+ final NodeList typeParameters;
+ final NodeList formals;
+
+ NewFunctionType(this.returnType, this.typeParameters, this.formals);
+
+ NewFunctionType asFunctionType() => this;
+
+ accept(Visitor visitor) {
+ throw new UnsupportedError("FunctionTypeVisit");
+ }
+
+ accept1(Visitor1 visitor, arg) {
+ throw new UnsupportedError("FunctionTypeVisit");
+ }
+
+ visitChildren(Visitor visitor) {
+ if (returnType != null) returnType.accept(visitor);
+ if (typeParameters != null) typeParameters.accept(visitor);
+ formals.accept(visitor);
+ }
+
+ visitChildren1(Visitor1 visitor, arg) {
+ if (returnType != null) returnType.accept1(visitor, arg);
+ if (typeParameters != null) typeParameters.accept1(visitor, arg);
+ formals.accept1(visitor, arg);
+ }
+
+ Token getBeginToken() => returnType.getBeginToken();
+
+ Token getEndToken() => formals.getEndToken();
+}
+
class TryStatement extends Statement {
final Block tryBlock;
final NodeList catchBlocks;
@@ -3134,6 +3170,7 @@ class ErrorNode extends Node
get type => null;
// Typedef.
+ get isNewSyntax => null;
get typeParameters => null;
get formals => null;
get typedefKeyword => null;
« pkg/compiler/lib/src/resolution/signatures.dart ('K') | « pkg/compiler/lib/src/tokens/token.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698