| 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.parseTopLevelDeclaration(); |
| 471 } | 471 } |
| 472 | 472 |
| 473 @override | 473 @override |
| 474 Directive parseFullDirective() { | 474 Directive parseFullDirective() { |
| 475 return _parserProxy._run((parser) => parser.parseTopLevelDeclaration); | 475 return _parserProxy.parseTopLevelDeclaration(); |
| 476 } | 476 } |
| 477 | 477 |
| 478 @override | 478 @override |
| 479 FunctionExpression parseFunctionExpression(String code) { | 479 FunctionExpression parseFunctionExpression(String code) { |
| 480 return _parseExpression(code); | 480 return _parseExpression(code); |
| 481 } | 481 } |
| 482 | 482 |
| 483 @override | 483 @override |
| 484 InstanceCreationExpression parseInstanceCreationExpression( | 484 InstanceCreationExpression parseInstanceCreationExpression( |
| 485 String code, analyzer.Token newToken) { | 485 String code, analyzer.Token newToken) { |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 * The builder which creates the analyzer AST data structures expected by the | 785 * The builder which creates the analyzer AST data structures expected by the |
| 786 * analyzer parser tests. | 786 * analyzer parser tests. |
| 787 */ | 787 */ |
| 788 final AstBuilder _astBuilder; | 788 final AstBuilder _astBuilder; |
| 789 | 789 |
| 790 /** | 790 /** |
| 791 * The error listener to which scanner and parser errors will be reported. | 791 * The error listener to which scanner and parser errors will be reported. |
| 792 */ | 792 */ |
| 793 final GatheringErrorListener _errorListener; | 793 final GatheringErrorListener _errorListener; |
| 794 | 794 |
| 795 final ForwardingTestListener _eventListener; |
| 796 |
| 795 /** | 797 /** |
| 796 * Creates a [ParserProxy] which is prepared to begin parsing at the given | 798 * Creates a [ParserProxy] which is prepared to begin parsing at the given |
| 797 * Fasta token. | 799 * Fasta token. |
| 798 */ | 800 */ |
| 799 factory ParserProxy(analyzer.Token startingToken, | 801 factory ParserProxy(analyzer.Token startingToken, |
| 800 {bool enableGenericMethodComments: false}) { | 802 {bool enableGenericMethodComments: false}) { |
| 801 var library = new KernelLibraryBuilderProxy(); | 803 var library = new KernelLibraryBuilderProxy(); |
| 802 var member = new BuilderProxy(); | 804 var member = new BuilderProxy(); |
| 803 var scope = new ScopeProxy(); | 805 var scope = new ScopeProxy(); |
| 804 TestSource source = new TestSource(); | 806 TestSource source = new TestSource(); |
| 805 var errorListener = new GatheringErrorListener(); | 807 var errorListener = new GatheringErrorListener(); |
| 806 var errorReporter = new ErrorReporter(errorListener, source); | 808 var errorReporter = new ErrorReporter(errorListener, source); |
| 807 var astBuilder = | 809 var astBuilder = |
| 808 new AstBuilder(errorReporter, library, member, scope, true); | 810 new AstBuilder(errorReporter, library, member, scope, true); |
| 809 astBuilder.parseGenericMethodComments = enableGenericMethodComments; | 811 astBuilder.parseGenericMethodComments = enableGenericMethodComments; |
| 810 var fastaParser = new fasta.Parser(new ForwardingTestListener(astBuilder)); | 812 var eventListener = new ForwardingTestListener(astBuilder); |
| 813 var fastaParser = new fasta.Parser(eventListener); |
| 811 astBuilder.parser = fastaParser; | 814 astBuilder.parser = fastaParser; |
| 812 return new ParserProxy._( | 815 return new ParserProxy._( |
| 813 startingToken, fastaParser, astBuilder, errorListener); | 816 startingToken, fastaParser, astBuilder, errorListener, eventListener); |
| 814 } | 817 } |
| 815 | 818 |
| 816 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder, | 819 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder, |
| 817 this._errorListener); | 820 this._errorListener, this._eventListener); |
| 818 | 821 |
| 819 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 822 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 820 | 823 |
| 821 @override | 824 @override |
| 822 ClassMember parseClassMember(String className) { | 825 ClassMember parseClassMember(String className) { |
| 823 _astBuilder.className = className; | 826 _astBuilder.className = className; |
| 827 _eventListener.begin('CompilationUnit'); |
| 824 var result = _run((parser) => parser.parseMember) as ClassMember; | 828 var result = _run((parser) => parser.parseMember) as ClassMember; |
| 829 _eventListener.end('CompilationUnit'); |
| 825 _astBuilder.className = null; | 830 _astBuilder.className = null; |
| 826 return result; | 831 return result; |
| 827 } | 832 } |
| 828 | 833 |
| 829 @override | 834 @override |
| 830 CompilationUnit parseCompilationUnit2() { | 835 CompilationUnit parseCompilationUnit2() { |
| 831 return _run((parser) => parser.parseUnit) as CompilationUnit; | 836 var result = _run((parser) => parser.parseUnit) as CompilationUnit; |
| 837 _eventListener.expectEmpty(); |
| 838 return result; |
| 839 } |
| 840 |
| 841 AnnotatedNode parseTopLevelDeclaration() { |
| 842 _eventListener.begin('CompilationUnit'); |
| 843 var result = _run((parser) => parser.parseTopLevelDeclaration); |
| 844 _eventListener.end('CompilationUnit'); |
| 845 return result; |
| 832 } | 846 } |
| 833 | 847 |
| 834 /** | 848 /** |
| 835 * Runs a single parser function, and returns the result as an analyzer AST. | 849 * Runs a single parser function, and returns the result as an analyzer AST. |
| 836 */ | 850 */ |
| 837 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { | 851 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { |
| 838 var parseFunction = getParseFunction(_fastaParser); | 852 var parseFunction = getParseFunction(_fastaParser); |
| 839 _currentFastaToken = parseFunction(_currentFastaToken); | 853 _currentFastaToken = parseFunction(_currentFastaToken); |
| 840 expect(_currentFastaToken.isEof, isTrue); | 854 expect(_currentFastaToken.isEof, isTrue); |
| 841 expect(_astBuilder.stack, hasLength(1)); | 855 expect(_astBuilder.stack, hasLength(1)); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 assertNoErrors(); | 1024 assertNoErrors(); |
| 1011 } | 1025 } |
| 1012 | 1026 |
| 1013 @failingTest | 1027 @failingTest |
| 1014 void test_parseCompilationUnitMember_abstractAsPrefix2() { | 1028 void test_parseCompilationUnitMember_abstractAsPrefix2() { |
| 1015 // TODO(danrubel): should not be generating an error | 1029 // TODO(danrubel): should not be generating an error |
| 1016 super.test_parseCompilationUnitMember_abstractAsPrefix(); | 1030 super.test_parseCompilationUnitMember_abstractAsPrefix(); |
| 1017 assertNoErrors(); | 1031 assertNoErrors(); |
| 1018 } | 1032 } |
| 1019 } | 1033 } |
| OLD | NEW |