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

Side by Side Diff: pkg/analyzer/test/generated/parser_fasta_test.dart

Issue 2985703002: new handleInvalidTopLevelDeclaration event in fasta parser (Closed)
Patch Set: cleanup forwarding listener - enclosingEvent 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:analyzer/dart/ast/ast.dart'; 5 import 'package:analyzer/dart/ast/ast.dart';
6 import 'package:analyzer/dart/ast/token.dart' as analyzer; 6 import 'package:analyzer/dart/ast/token.dart' as analyzer;
7 import 'package:analyzer/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/error/listener.dart' show ErrorReporter; 8 import 'package:analyzer/error/listener.dart' show ErrorReporter;
9 import 'package:analyzer/src/dart/scanner/scanner.dart'; 9 import 'package:analyzer/src/dart/scanner/scanner.dart';
10 import 'package:analyzer/src/fasta/ast_builder.dart'; 10 import 'package:analyzer/src/fasta/ast_builder.dart';
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 token, 460 token,
461 inFunctionType 461 inFunctionType
462 ? fasta.MemberKind.GeneralizedFunctionType 462 ? fasta.MemberKind.GeneralizedFunctionType
463 : fasta.MemberKind.NonStaticMethod); 463 : fasta.MemberKind.NonStaticMethod);
464 }, 464 },
465 errorCodes) as FormalParameterList; 465 errorCodes) as FormalParameterList;
466 } 466 }
467 467
468 @override 468 @override
469 CompilationUnitMember parseFullCompilationUnitMember() { 469 CompilationUnitMember parseFullCompilationUnitMember() {
470 return _parserProxy._run((parser) => parser.parseTopLevelDeclaration); 470 return _parserProxy._run(
471 (parser) => parser.parseTopLevelDeclaration, 'CompilationUnit');
471 } 472 }
472 473
473 @override 474 @override
474 Directive parseFullDirective() { 475 Directive parseFullDirective() {
475 return _parserProxy._run((parser) => parser.parseTopLevelDeclaration); 476 return _parserProxy._run(
477 (parser) => parser.parseTopLevelDeclaration, 'CompilationUnit');
476 } 478 }
477 479
478 @override 480 @override
479 FunctionExpression parseFunctionExpression(String code) { 481 FunctionExpression parseFunctionExpression(String code) {
480 return _parseExpression(code); 482 return _parseExpression(code);
481 } 483 }
482 484
483 @override 485 @override
484 InstanceCreationExpression parseInstanceCreationExpression( 486 InstanceCreationExpression parseInstanceCreationExpression(
485 String code, analyzer.Token newToken) { 487 String code, analyzer.Token newToken) {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 } 639 }
638 640
639 Object _runParser( 641 Object _runParser(
640 String source, ParseFunction getParseFunction(fasta.Parser parser), 642 String source, ParseFunction getParseFunction(fasta.Parser parser),
641 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { 643 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
642 if (errorCodes.isNotEmpty) { 644 if (errorCodes.isNotEmpty) {
643 // TODO(paulberry): Check that the parser generates the proper errors. 645 // TODO(paulberry): Check that the parser generates the proper errors.
644 throw new UnimplementedError(); 646 throw new UnimplementedError();
645 } 647 }
646 createParser(source); 648 createParser(source);
647 return _parserProxy._run(getParseFunction); 649 return _parserProxy._run(getParseFunction, null);
648 } 650 }
649 } 651 }
650 652
651 /** 653 /**
652 * Tests of the fasta parser based on [FormalParameterParserTestMixin]. 654 * Tests of the fasta parser based on [FormalParameterParserTestMixin].
653 */ 655 */
654 @reflectiveTest 656 @reflectiveTest
655 class FormalParameterParserTest_Fasta extends FastaParserTestCase 657 class FormalParameterParserTest_Fasta extends FastaParserTestCase
656 with FormalParameterParserTestMixin { 658 with FormalParameterParserTestMixin {
657 @override 659 @override
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 * The builder which creates the analyzer AST data structures expected by the 787 * The builder which creates the analyzer AST data structures expected by the
786 * analyzer parser tests. 788 * analyzer parser tests.
787 */ 789 */
788 final AstBuilder _astBuilder; 790 final AstBuilder _astBuilder;
789 791
790 /** 792 /**
791 * The error listener to which scanner and parser errors will be reported. 793 * The error listener to which scanner and parser errors will be reported.
792 */ 794 */
793 final GatheringErrorListener _errorListener; 795 final GatheringErrorListener _errorListener;
794 796
797 final ForwardingTestListener _eventListener;
798
795 /** 799 /**
796 * Creates a [ParserProxy] which is prepared to begin parsing at the given 800 * Creates a [ParserProxy] which is prepared to begin parsing at the given
797 * Fasta token. 801 * Fasta token.
798 */ 802 */
799 factory ParserProxy(analyzer.Token startingToken, 803 factory ParserProxy(analyzer.Token startingToken,
800 {bool enableGenericMethodComments: false}) { 804 {bool enableGenericMethodComments: false}) {
801 var library = new KernelLibraryBuilderProxy(); 805 var library = new KernelLibraryBuilderProxy();
802 var member = new BuilderProxy(); 806 var member = new BuilderProxy();
803 var scope = new ScopeProxy(); 807 var scope = new ScopeProxy();
804 TestSource source = new TestSource(); 808 TestSource source = new TestSource();
805 var errorListener = new GatheringErrorListener(); 809 var errorListener = new GatheringErrorListener();
806 var errorReporter = new ErrorReporter(errorListener, source); 810 var errorReporter = new ErrorReporter(errorListener, source);
807 var astBuilder = 811 var astBuilder =
808 new AstBuilder(errorReporter, library, member, scope, true); 812 new AstBuilder(errorReporter, library, member, scope, true);
809 astBuilder.parseGenericMethodComments = enableGenericMethodComments; 813 astBuilder.parseGenericMethodComments = enableGenericMethodComments;
810 var fastaParser = new fasta.Parser(new ForwardingTestListener(astBuilder)); 814 var eventListener = new ForwardingTestListener(astBuilder);
815 var fastaParser = new fasta.Parser(eventListener);
811 astBuilder.parser = fastaParser; 816 astBuilder.parser = fastaParser;
812 return new ParserProxy._( 817 return new ParserProxy._(
813 startingToken, fastaParser, astBuilder, errorListener); 818 startingToken, fastaParser, astBuilder, errorListener, eventListener);
814 } 819 }
815 820
816 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder, 821 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder,
817 this._errorListener); 822 this._errorListener, this._eventListener);
818 823
819 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 824 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
820 825
821 @override 826 @override
822 ClassMember parseClassMember(String className) { 827 ClassMember parseClassMember(String className) {
823 _astBuilder.className = className; 828 _astBuilder.className = className;
824 var result = _run((parser) => parser.parseMember) as ClassMember; 829 var result =
830 _run((parser) => parser.parseMember, 'CompilationUnit') as ClassMember;
825 _astBuilder.className = null; 831 _astBuilder.className = null;
826 return result; 832 return result;
827 } 833 }
828 834
829 @override 835 @override
830 CompilationUnit parseCompilationUnit2() { 836 CompilationUnit parseCompilationUnit2() {
831 return _run((parser) => parser.parseUnit) as CompilationUnit; 837 return _run((parser) => parser.parseUnit, null) as CompilationUnit;
832 } 838 }
833 839
834 /** 840 /**
835 * Runs a single parser function, and returns the result as an analyzer AST. 841 * Runs a single parser function, and returns the result as an analyzer AST.
836 */ 842 */
837 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { 843 Object _run(ParseFunction getParseFunction(fasta.Parser parser),
844 String enclosingEvent) {
845 _eventListener.enclosingEvent = enclosingEvent;
838 var parseFunction = getParseFunction(_fastaParser); 846 var parseFunction = getParseFunction(_fastaParser);
839 _currentFastaToken = parseFunction(_currentFastaToken); 847 _currentFastaToken = parseFunction(_currentFastaToken);
840 expect(_currentFastaToken.isEof, isTrue); 848 expect(_currentFastaToken.isEof, isTrue);
841 expect(_astBuilder.stack, hasLength(1)); 849 expect(_astBuilder.stack, hasLength(1));
842 return _astBuilder.pop(); 850 return _astBuilder.pop();
843 } 851 }
844 } 852 }
845 853
846 /** 854 /**
847 * Proxy implementation of [Scope] used by Fasta parser tests. 855 * Proxy implementation of [Scope] used by Fasta parser tests.
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 assertNoErrors(); 1018 assertNoErrors();
1011 } 1019 }
1012 1020
1013 @failingTest 1021 @failingTest
1014 void test_parseCompilationUnitMember_abstractAsPrefix2() { 1022 void test_parseCompilationUnitMember_abstractAsPrefix2() {
1015 // TODO(danrubel): should not be generating an error 1023 // TODO(danrubel): should not be generating an error
1016 super.test_parseCompilationUnitMember_abstractAsPrefix(); 1024 super.test_parseCompilationUnitMember_abstractAsPrefix();
1017 assertNoErrors(); 1025 assertNoErrors();
1018 } 1026 }
1019 } 1027 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698