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