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/src/dart/scanner/scanner.dart'; | 9 import 'package:analyzer/src/dart/scanner/scanner.dart'; |
9 import 'package:analyzer/src/fasta/ast_builder.dart'; | 10 import 'package:analyzer/src/fasta/ast_builder.dart'; |
10 import 'package:analyzer/src/generated/parser.dart' as analyzer; | 11 import 'package:analyzer/src/generated/parser.dart' as analyzer; |
11 import 'package:analyzer/src/generated/utilities_dart.dart'; | 12 import 'package:analyzer/src/generated/utilities_dart.dart'; |
12 import 'package:analyzer/src/string_source.dart'; | 13 import 'package:analyzer/src/string_source.dart'; |
13 import 'package:front_end/src/fasta/fasta_codes.dart' show Message; | 14 import 'package:front_end/src/fasta/fasta_codes.dart' show Message; |
14 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; | 15 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; |
15 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; | 16 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; |
16 import 'package:front_end/src/fasta/parser.dart' show IdentifierContext; | 17 import 'package:front_end/src/fasta/parser.dart' show IdentifierContext; |
17 import 'package:front_end/src/fasta/parser.dart' as fasta; | 18 import 'package:front_end/src/fasta/parser.dart' as fasta; |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 } | 289 } |
289 | 290 |
290 @override | 291 @override |
291 analyzer.Parser get parser => _parserProxy; | 292 analyzer.Parser get parser => _parserProxy; |
292 | 293 |
293 @override | 294 @override |
294 bool get usingFastaParser => true; | 295 bool get usingFastaParser => true; |
295 | 296 |
296 @override | 297 @override |
297 void assertErrorsWithCodes(List<ErrorCode> expectedErrorCodes) { | 298 void assertErrorsWithCodes(List<ErrorCode> expectedErrorCodes) { |
298 // TODO(scheglov): implement assertErrorsWithCodes | 299 _parserProxy._errorListener.assertErrorsWithCodes(expectedErrorCodes); |
299 fail('Not implemented'); | |
300 } | 300 } |
301 | 301 |
302 @override | 302 @override |
303 void assertNoErrors() { | 303 void assertNoErrors() { |
304 // TODO(paulberry): implement assertNoErrors | 304 _parserProxy._errorListener.assertNoErrors(); |
305 } | 305 } |
306 | 306 |
307 @override | 307 @override |
308 void createParser(String content) { | 308 void createParser(String content) { |
309 var scanner = new StringScanner(content, includeComments: true); | 309 var scanner = new StringScanner(content, includeComments: true); |
310 scanner.scanGenericMethodComments = enableGenericMethodComments; | 310 scanner.scanGenericMethodComments = enableGenericMethodComments; |
311 _fastaTokens = scanner.tokenize(); | 311 _fastaTokens = scanner.tokenize(); |
312 _parserProxy = new ParserProxy(_fastaTokens, | 312 _parserProxy = new ParserProxy(_fastaTokens, |
313 enableGenericMethodComments: enableGenericMethodComments); | 313 enableGenericMethodComments: enableGenericMethodComments); |
314 } | 314 } |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 super.test_parseNormalFormalParameter_function_void_nullable(); | 706 super.test_parseNormalFormalParameter_function_void_nullable(); |
707 } | 707 } |
708 | 708 |
709 @override | 709 @override |
710 @failingTest | 710 @failingTest |
711 void test_parseNormalFormalParameter_function_void_typeParameters_nullable() { | 711 void test_parseNormalFormalParameter_function_void_typeParameters_nullable() { |
712 // TODO(scheglov): Not implemented: Nnbd | 712 // TODO(scheglov): Not implemented: Nnbd |
713 super | 713 super |
714 .test_parseNormalFormalParameter_function_void_typeParameters_nullable()
; | 714 .test_parseNormalFormalParameter_function_void_typeParameters_nullable()
; |
715 } | 715 } |
| 716 |
| 717 @failingTest |
| 718 void test_parseNormalFormalParameter_field_const_noType2() { |
| 719 // TODO(danrubel): should not be generating an error |
| 720 super.test_parseNormalFormalParameter_field_const_noType(); |
| 721 assertNoErrors(); |
| 722 } |
| 723 |
| 724 @failingTest |
| 725 void test_parseNormalFormalParameter_field_const_type2() { |
| 726 // TODO(danrubel): should not be generating an error |
| 727 super.test_parseNormalFormalParameter_field_const_type(); |
| 728 assertNoErrors(); |
| 729 } |
| 730 |
| 731 @failingTest |
| 732 void test_parseNormalFormalParameter_simple_const_noType2() { |
| 733 // TODO(danrubel): should not be generating an error |
| 734 super.test_parseNormalFormalParameter_simple_const_noType(); |
| 735 assertNoErrors(); |
| 736 } |
| 737 |
| 738 @failingTest |
| 739 void test_parseNormalFormalParameter_simple_const_type2() { |
| 740 // TODO(danrubel): should not be generating an error |
| 741 super.test_parseNormalFormalParameter_simple_const_type(); |
| 742 assertNoErrors(); |
| 743 } |
716 } | 744 } |
717 | 745 |
718 /** | 746 /** |
719 * Proxy implementation of [KernelLibraryBuilderProxy] used by Fasta parser | 747 * Proxy implementation of [KernelLibraryBuilderProxy] used by Fasta parser |
720 * tests. | 748 * tests. |
721 */ | 749 */ |
722 class KernelLibraryBuilderProxy implements KernelLibraryBuilder { | 750 class KernelLibraryBuilderProxy implements KernelLibraryBuilder { |
723 @override | 751 @override |
724 final uri = Uri.parse('file:///test.dart'); | 752 final uri = Uri.parse('file:///test.dart'); |
725 | 753 |
(...skipping 27 matching lines...) Expand all Loading... |
753 */ | 781 */ |
754 final fasta.Parser _fastaParser; | 782 final fasta.Parser _fastaParser; |
755 | 783 |
756 /** | 784 /** |
757 * 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 |
758 * analyzer parser tests. | 786 * analyzer parser tests. |
759 */ | 787 */ |
760 final AstBuilder _astBuilder; | 788 final AstBuilder _astBuilder; |
761 | 789 |
762 /** | 790 /** |
| 791 * The error listener to which scanner and parser errors will be reported. |
| 792 */ |
| 793 final GatheringErrorListener _errorListener; |
| 794 |
| 795 /** |
763 * Creates a [ParserProxy] which is prepared to begin parsing at the given | 796 * Creates a [ParserProxy] which is prepared to begin parsing at the given |
764 * Fasta token. | 797 * Fasta token. |
765 */ | 798 */ |
766 factory ParserProxy(analyzer.Token startingToken, | 799 factory ParserProxy(analyzer.Token startingToken, |
767 {bool enableGenericMethodComments: false}) { | 800 {bool enableGenericMethodComments: false}) { |
768 var library = new KernelLibraryBuilderProxy(); | 801 var library = new KernelLibraryBuilderProxy(); |
769 var member = new BuilderProxy(); | 802 var member = new BuilderProxy(); |
770 var scope = new ScopeProxy(); | 803 var scope = new ScopeProxy(); |
771 var astBuilder = new AstBuilder(null, library, member, scope, true); | 804 TestSource source = new TestSource(); |
| 805 var errorListener = new GatheringErrorListener(); |
| 806 var errorReporter = new ErrorReporter(errorListener, source); |
| 807 var astBuilder = |
| 808 new AstBuilder(errorReporter, library, member, scope, true); |
772 astBuilder.parseGenericMethodComments = enableGenericMethodComments; | 809 astBuilder.parseGenericMethodComments = enableGenericMethodComments; |
773 var fastaParser = new fasta.Parser(new ForwardingTestListener(astBuilder)); | 810 var fastaParser = new fasta.Parser(new ForwardingTestListener(astBuilder)); |
774 astBuilder.parser = fastaParser; | 811 astBuilder.parser = fastaParser; |
775 return new ParserProxy._(startingToken, fastaParser, astBuilder); | 812 return new ParserProxy._( |
| 813 startingToken, fastaParser, astBuilder, errorListener); |
776 } | 814 } |
777 | 815 |
778 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder); | 816 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder, |
| 817 this._errorListener); |
779 | 818 |
780 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 819 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
781 | 820 |
782 @override | 821 @override |
783 ClassMember parseClassMember(String className) { | 822 ClassMember parseClassMember(String className) { |
784 _astBuilder.className = className; | 823 _astBuilder.className = className; |
785 var result = _run((parser) => parser.parseMember) as ClassMember; | 824 var result = _run((parser) => parser.parseMember) as ClassMember; |
786 _astBuilder.className = null; | 825 _astBuilder.className = null; |
787 return result; | 826 return result; |
788 } | 827 } |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 super.test_parsePartOfDirective_name(); | 988 super.test_parsePartOfDirective_name(); |
950 } | 989 } |
951 | 990 |
952 @override | 991 @override |
953 @failingTest | 992 @failingTest |
954 void test_parsePartOfDirective_uri() { | 993 void test_parsePartOfDirective_uri() { |
955 // TODO(paulberry,ahe): URIs in "part of" declarations are not supported by | 994 // TODO(paulberry,ahe): URIs in "part of" declarations are not supported by |
956 // Fasta. | 995 // Fasta. |
957 super.test_parsePartOfDirective_uri(); | 996 super.test_parsePartOfDirective_uri(); |
958 } | 997 } |
| 998 |
| 999 @failingTest |
| 1000 void test_parseCompilationUnit_operatorAsPrefix_parameterized2() { |
| 1001 // TODO(danrubel): should not be generating an error |
| 1002 super.test_parseCompilationUnit_operatorAsPrefix_parameterized(); |
| 1003 assertNoErrors(); |
| 1004 } |
| 1005 |
| 1006 @failingTest |
| 1007 void test_parseCompilationUnit_typedefAsPrefix2() { |
| 1008 // TODO(danrubel): should not be generating an error |
| 1009 super.test_parseCompilationUnit_typedefAsPrefix(); |
| 1010 assertNoErrors(); |
| 1011 } |
| 1012 |
| 1013 @failingTest |
| 1014 void test_parseCompilationUnitMember_abstractAsPrefix2() { |
| 1015 // TODO(danrubel): should not be generating an error |
| 1016 super.test_parseCompilationUnitMember_abstractAsPrefix(); |
| 1017 assertNoErrors(); |
| 1018 } |
959 } | 1019 } |
OLD | NEW |