From 8f0106e490c1f1c679c49a9bc3d754c465ad6e3e Mon Sep 17 00:00:00 2001 From: Dan Rubel Date: Fri, 15 Jun 2018 00:38:53 +0000 Subject: [PATCH] Update more Analyzer fasta tests Change-Id: I1b39eebaf11882bd1524335a7dcbba86f2d26cfb Reviewed-on: https://dart-review.googlesource.com/60362 Commit-Queue: Dan Rubel Reviewed-by: Brian Wilkerson --- .../lib/src/generated/parser_fasta.dart | 2 +- .../test/generated/parser_fasta_test.dart | 20 ++-------- pkg/analyzer/test/generated/parser_test.dart | 39 ++++++++++++------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/pkg/analyzer/lib/src/generated/parser_fasta.dart b/pkg/analyzer/lib/src/generated/parser_fasta.dart index 69905bb5c19..ba4fcf59319 100644 --- a/pkg/analyzer/lib/src/generated/parser_fasta.dart +++ b/pkg/analyzer/lib/src/generated/parser_fasta.dart @@ -110,7 +110,7 @@ abstract class ParserAdapter implements Parser { currentToken = fastaParser.parseClassMember(currentToken); ClassDeclaration declaration = astBuilder.classDeclaration; astBuilder.classDeclaration = null; - return declaration.members[0]; + return declaration.members.isNotEmpty ? declaration.members[0] : null; } @override diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart index b54fefa2afb..6999dfbcb17 100644 --- a/pkg/analyzer/test/generated/parser_fasta_test.dart +++ b/pkg/analyzer/test/generated/parser_fasta_test.dart @@ -253,7 +253,7 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase @override @failingTest void test_parseUnaryExpression_decrement_super() { - // TODO(brianwilkerson) Does not recover. + // TODO(danrubel) Reports a different error and different token stream. // Expected: TokenType: // Actual: TokenType: super.test_parseUnaryExpression_decrement_super(); @@ -262,7 +262,7 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase @override @failingTest void test_parseUnaryExpression_decrement_super_withComment() { - // TODO(brianwilkerson) Does not recover. + // TODO(danrubel) Reports a different error and different token stream. // Expected: TokenType: // Actual: TokenType: super.test_parseUnaryExpression_decrement_super_withComment(); @@ -960,13 +960,6 @@ class RecoveryParserTest_Fasta extends FastaParserTestCase ]); } - @override - @failingTest - void test_missingIdentifier_afterAnnotation() { - // TODO(brianwilkerson) reportUnrecoverableErrorWithToken - super.test_missingIdentifier_afterAnnotation(); - } - @override void test_relationalExpression_missing_LHS_RHS() { parseExpression("is", codes: [ @@ -987,14 +980,7 @@ class RecoveryParserTest_Fasta extends FastaParserTestCase @reflectiveTest class SimpleParserTest_Fasta extends FastaParserTestCase - with SimpleParserTestMixin { - @override - @failingTest - void test_parseTypeParameterList_single() { - // TODO(brianwilkerson) Does not use all tokens. - super.test_parseTypeParameterList_single(); - } -} + with SimpleParserTestMixin {} /** * Tests of the fasta parser based on [StatementParserTestMixin]. diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart index 4614c6f508d..31171657a0d 100644 --- a/pkg/analyzer/test/generated/parser_test.dart +++ b/pkg/analyzer/test/generated/parser_test.dart @@ -11815,17 +11815,23 @@ class C { } void test_missingIdentifier_afterAnnotation() { - createParser('@override }'); + createParser('@override }', expectedEndOffset: 10); ClassMember member = parser.parseClassMember('C'); expectNotNullIfNoErrors(member); listener.assertErrors( [expectedError(ParserErrorCode.EXPECTED_CLASS_MEMBER, 10, 1)]); - expect(member, new isInstanceOf()); - MethodDeclaration method = member; - expect(method.documentationComment, isNull); - NodeList metadata = method.metadata; - expect(metadata, hasLength(1)); - expect(metadata[0].name.name, "override"); + if (usingFastaParser) { + // TODO(danrubel): Consider generating a sub method so that the + // existing annotation can be associated with a class member. + expect(member, isNull); + } else { + expect(member, new isInstanceOf()); + MethodDeclaration method = member; + expect(method.documentationComment, isNull); + NodeList metadata = method.metadata; + expect(metadata, hasLength(1)); + expect(metadata[0].name.name, "override"); + } } void test_missingSemicolon_varialeDeclarationList() { @@ -14594,13 +14600,20 @@ Function(core.List x) m() => null; } void test_parseTypeParameterList_single() { - createParser('<'); + createParser('<', expectedEndOffset: 0); TypeParameterList parameterList = parser.parseTypeParameterList(); - expectNotNullIfNoErrors(parameterList); - assertNoErrors(); - expect(parameterList.leftBracket, isNotNull); - expect(parameterList.rightBracket, isNotNull); - expect(parameterList.typeParameters, hasLength(1)); + if (usingFastaParser) { + // TODO(danrubel): Consider splitting `<<` and marking the first `<` + // as an unexpected token. + expect(parameterList, isNull); + assertNoErrors(); + } else { + expectNotNullIfNoErrors(parameterList); + assertNoErrors(); + expect(parameterList.leftBracket, isNotNull); + expect(parameterList.rightBracket, isNotNull); + expect(parameterList.typeParameters, hasLength(1)); + } } void test_parseTypeParameterList_withTrailingEquals() {