| 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 5bc81a3c02460fde8f3e767654b1760b4cb3d686..fb2421a4b64328364516a7e5716c52cca0bdf065 100644
|
| --- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
|
| @@ -510,7 +510,7 @@ class AstBuilder extends ScopeListener {
|
|
|
| FormalParameter node;
|
| SimpleIdentifier name;
|
| - if (nameOrFunctionTypedParameter is FunctionTypedFormalParameter) {
|
| + if (nameOrFunctionTypedParameter is FormalParameter) {
|
| node = nameOrFunctionTypedParameter;
|
| name = nameOrFunctionTypedParameter.identifier;
|
| } else {
|
| @@ -529,17 +529,13 @@ class AstBuilder extends ScopeListener {
|
| Token period = identical('.', thisKeyword.next?.stringValue)
|
| ? thisKeyword.next
|
| : null;
|
| - TypeParameterList typeParameters; // TODO(scheglov)
|
| - FormalParameterList formalParameters; // TODO(scheglov)
|
| node = ast.fieldFormalParameter2(
|
| covariantKeyword: toAnalyzerToken(covariantKeyword),
|
| keyword: toAnalyzerToken(keyword),
|
| type: type,
|
| thisKeyword: toAnalyzerToken(thisKeyword),
|
| period: toAnalyzerToken(period),
|
| - identifier: name,
|
| - typeParameters: typeParameters,
|
| - parameters: formalParameters);
|
| + identifier: name);
|
| }
|
| }
|
|
|
| @@ -553,7 +549,8 @@ class AstBuilder extends ScopeListener {
|
| }
|
|
|
| @override
|
| - void endFunctionTypedFormalParameter(Token token) {
|
| + void endFunctionTypedFormalParameter(
|
| + Token covariantKeyword, Token thisKeyword, FormalParameterType kind) {
|
| debugEvent("FunctionTypedFormalParameter");
|
|
|
| FormalParameterList formalParameters = pop();
|
| @@ -572,11 +569,27 @@ class AstBuilder extends ScopeListener {
|
| pop(); // TODO(paulberry): Metadata.
|
|
|
| FormalParameter node;
|
| - node = ast.functionTypedFormalParameter2(
|
| - returnType: returnType,
|
| - identifier: name,
|
| - typeParameters: typeParameters,
|
| - parameters: formalParameters);
|
| + if (thisKeyword == null) {
|
| + node = ast.functionTypedFormalParameter2(
|
| + covariantKeyword: toAnalyzerToken(covariantKeyword),
|
| + returnType: returnType,
|
| + identifier: name,
|
| + typeParameters: typeParameters,
|
| + parameters: formalParameters);
|
| + } else {
|
| + // TODO(scheglov): Ideally the period token should be passed in.
|
| + Token period = identical('.', thisKeyword?.next?.stringValue)
|
| + ? thisKeyword.next
|
| + : null;
|
| + node = ast.fieldFormalParameter2(
|
| + covariantKeyword: toAnalyzerToken(covariantKeyword),
|
| + type: returnType,
|
| + thisKeyword: toAnalyzerToken(thisKeyword),
|
| + period: toAnalyzerToken(period),
|
| + identifier: name,
|
| + typeParameters: typeParameters,
|
| + parameters: formalParameters);
|
| + }
|
|
|
| scope[name.name] = name.staticElement = new AnalyzerParameterElement(node);
|
| push(node);
|
|
|