Skip to content

Commit

Permalink
Add AstBuilder support for TypeArguments.
Browse files Browse the repository at this point in the history
R=scheglov@google.com

Review-Url: https://codereview.chromium.org/2716483002 .
  • Loading branch information
stereotype441 committed Feb 22, 2017
1 parent de63e4f commit abcc4d4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
18 changes: 2 additions & 16 deletions pkg/analyzer/test/generated/parser_fasta_test.dart
Expand Up @@ -464,7 +464,7 @@ class FormalParameterParserTest_Fasta extends FastaParserTestCase
@override
@failingTest
void test_parseFormalParameter_covariant_type_normal() {
// TODO(scheglov): Unhandled event: TypeArguments
// TODO(paulberry): Covariant keyword is not yet supported.
super.test_parseFormalParameter_covariant_type_normal();
}

Expand Down Expand Up @@ -986,7 +986,7 @@ class TopLevelParserTest_Fasta extends FastaParserTestCase
@override
@failingTest
void test_parseCompilationUnit_exportAsPrefix_parameterized() {
// TODO(paulberry): Unhandled event: TypeArguments
// TODO(paulberry): As of commit 5de9108 this syntax is invalid.
super.test_parseCompilationUnit_exportAsPrefix_parameterized();
}

Expand Down Expand Up @@ -1028,13 +1028,6 @@ class TopLevelParserTest_Fasta extends FastaParserTestCase
.test_parseCompilationUnitMember_function_generic_noReturnType_annotated();
}

@override
@failingTest
void test_parseCompilationUnitMember_typeAlias_generic() {
// TODO(paulberry): Unhandled event: TypeArguments
super.test_parseCompilationUnitMember_typeAlias_generic();
}

void test_parseCompilationUnitMember_typedef() {
// TODO(paulberry): Unhandled event: FunctionTypeAlias
super.test_parseCompilationUnitMember_typedef();
Expand Down Expand Up @@ -1125,13 +1118,6 @@ class TopLevelParserTest_Fasta extends FastaParserTestCase
super.test_parsePartOfDirective_uri();
}

@override
@failingTest
void test_parseTypeAlias_function_parameterizedReturnType() {
// TODO(paulberry): Unhandled event: TypeArguments
super.test_parseTypeAlias_function_parameterizedReturnType();
}

@override
@failingTest
void test_parseTypeAlias_genericFunction_noParameters() {
Expand Down
12 changes: 11 additions & 1 deletion pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
Expand Up @@ -478,7 +478,8 @@ class AstBuilder extends ScopeListener {
SimpleIdentifier name = pop();
TypeName type = pop();
Token keyword = _popOptionalSingleModifier();
pop(); // Metadata.
pop(); // TODO(paulberry): Metadata.
// TODO(paulberry): handle covariant keyword.
SimpleFormalParameter node = ast.simpleFormalParameter(
null, null, toAnalyzerToken(keyword), type, name);
scope[name.name] = name.staticElement = new AnalyzerParameterElement(node);
Expand Down Expand Up @@ -1085,6 +1086,7 @@ class AstBuilder extends ScopeListener {
toAnalyzerToken(endToken)));
}

@override
void endEnum(Token enumKeyword, Token endBrace, int count) {
debugEvent("Enum");
List<EnumConstantDeclaration> constants = popList(count);
Expand All @@ -1107,6 +1109,14 @@ class AstBuilder extends ScopeListener {
toAnalyzerToken(closeBrace)));
}

@override
void endTypeArguments(int count, Token beginToken, Token endToken) {
debugEvent("TypeArguments");
List<TypeAnnotation> arguments = popList(count);
push(ast.typeArgumentList(
toAnalyzerToken(beginToken), arguments, toAnalyzerToken(endToken)));
}

/**
* Pop the modifiers list, if the list is empty return `null`, if the list
* has one item return it; otherwise return `null`.
Expand Down

0 comments on commit abcc4d4

Please sign in to comment.