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

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

Issue 2996163002: support class native clause (Closed)
Patch Set: update DietListener and test 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..4559fa818653ebdc694009320570c179b41e3f69 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';
@@ -2213,6 +2214,9 @@ class FastaParserTestCase extends Object
ParserProxy _parserProxy;
analyzer.Token _fastaTokens;
+ @override
+ bool allowNativeClause = false;
+
@override
GatheringErrorListener get listener => _parserProxy._errorListener;
@@ -2277,6 +2281,7 @@ class FastaParserTestCase extends Object
scanner.scanGenericMethodComments = enableGenericMethodComments;
_fastaTokens = scanner.tokenize();
_parserProxy = new ParserProxy(_fastaTokens,
+ allowNativeClause: allowNativeClause,
enableGenericMethodComments: enableGenericMethodComments);
}
@@ -2773,7 +2778,8 @@ class ParserProxy implements analyzer.Parser {
* Fasta token.
*/
factory ParserProxy(analyzer.Token startingToken,
- {bool enableGenericMethodComments: false}) {
+ {bool allowNativeClause: false,
+ bool enableGenericMethodComments: false}) {
var library = new KernelLibraryBuilderProxy();
var member = new BuilderProxy();
var scope = new ScopeProxy();
@@ -2782,6 +2788,7 @@ class ParserProxy implements analyzer.Parser {
var errorReporter = new ErrorReporter(errorListener, source);
var astBuilder =
new AstBuilder(errorReporter, library, member, scope, true);
+ astBuilder.allowNativeClause = allowNativeClause;
astBuilder.parseGenericMethodComments = enableGenericMethodComments;
var eventListener = new ForwardingTestListener(astBuilder);
var fastaParser = new fasta.Parser(eventListener);
@@ -2933,11 +2940,43 @@ 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 (allowNativeClause) {
+ assertNoErrors();
+ } else {
+ assertErrorsWithCodes([
+ ParserErrorCode.NATIVE_CLAUSE_SHOULD_BE_ANNOTATION,
+ ]);
+ }
+ expect(member, new isInstanceOf<ClassDeclaration>());
+ ClassDeclaration declaration = member;
+ expect(declaration.nativeClause, isNotNull);
+ expect(declaration.nativeClause.nativeKeyword, isNotNull);
+ expect(declaration.nativeClause.name, isNull);
+ expect(declaration.endToken.type, TokenType.CLOSE_CURLY_BRACKET);
+ }
+
+ void test_parseClassDeclaration_native_allowed() {
+ allowNativeClause = true;
+ test_parseClassDeclaration_native();
+ }
+
+ void test_parseClassDeclaration_native_missing_literal_allowed() {
+ allowNativeClause = true;
+ test_parseClassDeclaration_native_missing_literal();
+ }
+
+ void test_parseClassDeclaration_native_missing_literal_not_allowed() {
+ allowNativeClause = false;
+ test_parseClassDeclaration_native_missing_literal();
+ }
+
+ void test_parseClassDeclaration_native_not_allowed() {
+ allowNativeClause = false;
+ test_parseClassDeclaration_native();
}
@override
« no previous file with comments | « pkg/analyzer/test/generated/parser_fasta_listener.dart ('k') | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698