Chromium Code Reviews| Index: pkg/analyzer/test/generated/parser_fasta_test.dart |
| diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart |
| index fed2bb4a307d71bc74e85a78572ee11b9626aa32..6252f2a4b8077370ad349053357a45a76bf837ec 100644 |
| --- a/pkg/analyzer/test/generated/parser_fasta_test.dart |
| +++ b/pkg/analyzer/test/generated/parser_fasta_test.dart |
| @@ -4,6 +4,7 @@ |
| import 'package:analyzer/dart/ast/ast.dart'; |
| import 'package:analyzer/dart/ast/token.dart' as analyzer; |
| +import 'package:analyzer/dart/ast/token.dart' show TokenType; |
| import 'package:analyzer/error/error.dart'; |
| import 'package:analyzer/error/listener.dart' show ErrorReporter; |
| import 'package:analyzer/src/dart/scanner/scanner.dart'; |
| @@ -2933,11 +2934,45 @@ class StatementParserTest_Fasta extends FastaParserTestCase |
| @reflectiveTest |
| class TopLevelParserTest_Fasta extends FastaParserTestCase |
| with TopLevelParserTestMixin { |
| - @override |
| - @failingTest |
| - void test_parseClassDeclaration_native() { |
| - // TODO(paulberry): TODO(paulberry,ahe): Fasta parser doesn't appear to support "native" syntax yet. |
| - super.test_parseClassDeclaration_native(); |
| + void test_parseClassDeclaration_native_missing_literal() { |
| + createParser('class A native {}'); |
| + CompilationUnitMember member = parseFullCompilationUnitMember(); |
| + expect(member, isNotNull); |
| + if (AstBuilder.isNativeClauseAllowed) { |
| + assertNoErrors(); |
| + } else { |
| + assertErrorsWithCodes([ |
| + ParserErrorCode.NATIVE_CLAUSE_SHOULD_BE_ANNOTATION, |
| + ]); |
| + } |
| + expect(member, new isInstanceOf<ClassDeclaration>()); |
| + ClassDeclaration declaration = member; |
| + expect(declaration.nativeClause, isNull); |
| + expect(declaration.endToken.type, TokenType.CLOSE_CURLY_BRACKET); |
| + } |
| + |
| + void test_parseClassDeclaration_native_allowed() { |
| + _setNativeAllowed(true, () { |
| + test_parseClassDeclaration_native(); |
| + }); |
| + } |
| + |
| + void test_parseClassDeclaration_native_missing_literal_allowed() { |
| + _setNativeAllowed(true, () { |
| + test_parseClassDeclaration_native_missing_literal(); |
| + }); |
| + } |
| + |
| + void test_parseClassDeclaration_native_missing_literal_not_allowed() { |
| + _setNativeAllowed(false, () { |
| + test_parseClassDeclaration_native_missing_literal(); |
| + }); |
| + } |
| + |
| + void test_parseClassDeclaration_native_not_allowed() { |
| + _setNativeAllowed(false, () { |
| + test_parseClassDeclaration_native(); |
| + }); |
| } |
| @override |
| @@ -2993,4 +3028,14 @@ class TopLevelParserTest_Fasta extends FastaParserTestCase |
| super.test_parseCompilationUnitMember_abstractAsPrefix(); |
| assertNoErrors(); |
| } |
| + |
| + void _setNativeAllowed(bool isAllowed, Function f) { |
| + bool original = AstBuilder.isNativeClauseAllowed; |
| + AstBuilder.isNativeClauseAllowed = isAllowed; |
|
ahe
2017/08/21 12:04:10
You could make this an instance field on FastaPars
danrubel
2017/08/22 01:35:28
Good point. Revised.
|
| + try { |
| + f(); |
| + } finally { |
| + AstBuilder.isNativeClauseAllowed = original; |
| + } |
| + } |
| } |