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); |
} |