| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |