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

Unified Diff: pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart

Issue 2716433002: Add support for FieldFormalParameter. (Closed)
Patch Set: Created 3 years, 10 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/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 fcf2b398008b902142cea0f4bd52e7c48b7fd21d..e808728f7f174a1e4f55d1f1e42b01bbb59d62dc 100644
--- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
+++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
@@ -491,17 +491,32 @@ class AstBuilder extends ScopeListener {
push(ast.throwExpression(toAnalyzerToken(throwToken), pop()));
}
- void endFormalParameter(Token thisKeyword) {
+ void endFormalParameter(Token thisKeyword, Token period) {
debugEvent("FormalParameter");
- if (thisKeyword != null) {
- internalError("'this' can't be used here.");
- }
SimpleIdentifier name = pop();
TypeName type = pop();
Token keyword = _popOptionalSingleModifier();
pop(); // Metadata.
- SimpleFormalParameter node = ast.simpleFormalParameter(
- null, null, toAnalyzerToken(keyword), type, name);
+
+ FormalParameter node;
+ if (thisKeyword == null) {
+ node = ast.simpleFormalParameter(
+ null, null, toAnalyzerToken(keyword), type, name);
+ } else {
+ TypeParameterList typeParameters; // TODO(scheglov)
+ FormalParameterList formalParameters; // TODO(scheglov)
+ node = ast.fieldFormalParameter(
+ null,
+ null,
+ toAnalyzerToken(keyword),
+ type,
+ toAnalyzerToken(thisKeyword),
+ toAnalyzerToken(period),
+ name,
+ typeParameters,
+ formalParameters);
+ }
+
scope[name.name] = name.staticElement = new AnalyzerParameterElement(node);
push(node);
}

Powered by Google App Engine
This is Rietveld 408576698