Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Unified Diff: pkg/analyzer/test/generated/parser_fasta_test.dart

Issue 2996163002: support class native clause (Closed)
Patch Set: add new fasta native clause error code Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698