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

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

Issue 3011643002: Fix several failing tests (Closed)
Patch Set: Created 3 years, 3 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/dart/ast/token.dart' show TokenType; 7 import 'package:analyzer/dart/ast/token.dart' show TokenType;
8 import 'package:analyzer/error/error.dart'; 8 import 'package:analyzer/error/error.dart';
9 import 'package:analyzer/error/listener.dart' show ErrorReporter; 9 import 'package:analyzer/error/listener.dart' show ErrorReporter;
10 import 'package:analyzer/src/dart/scanner/scanner.dart'; 10 import 'package:analyzer/src/dart/scanner/scanner.dart';
11 import 'package:analyzer/src/fasta/ast_builder.dart'; 11 import 'package:analyzer/src/fasta/ast_builder.dart';
12 import 'package:analyzer/src/generated/parser.dart' as analyzer; 12 import 'package:analyzer/src/generated/parser.dart' as analyzer;
13 import 'package:analyzer/src/generated/parser.dart' show CommentAndMetadata;
13 import 'package:analyzer/src/generated/utilities_dart.dart'; 14 import 'package:analyzer/src/generated/utilities_dart.dart';
14 import 'package:analyzer/src/string_source.dart'; 15 import 'package:analyzer/src/string_source.dart';
15 import 'package:front_end/src/fasta/fasta_codes.dart' show Message; 16 import 'package:front_end/src/fasta/fasta_codes.dart' show Message;
16 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; 17 import 'package:front_end/src/fasta/kernel/kernel_builder.dart';
17 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; 18 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart';
18 import 'package:front_end/src/fasta/parser.dart' show IdentifierContext; 19 import 'package:front_end/src/fasta/parser.dart' show IdentifierContext;
19 import 'package:front_end/src/fasta/parser.dart' as fasta; 20 import 'package:front_end/src/fasta/parser.dart' as fasta;
20 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; 21 import 'package:front_end/src/fasta/scanner/string_scanner.dart';
21 import 'package:front_end/src/fasta/scanner/token.dart' as fasta; 22 import 'package:front_end/src/fasta/scanner/token.dart' as fasta;
23 import 'package:front_end/src/fasta/source/stack_listener.dart';
22 import 'package:test/test.dart'; 24 import 'package:test/test.dart';
23 import 'package:test_reflective_loader/test_reflective_loader.dart'; 25 import 'package:test_reflective_loader/test_reflective_loader.dart';
24 26
25 import 'parser_fasta_listener.dart'; 27 import 'parser_fasta_listener.dart';
26 import 'parser_test.dart'; 28 import 'parser_test.dart';
27 import 'test_support.dart'; 29 import 'test_support.dart';
28 30
29 main() { 31 main() {
30 defineReflectiveSuite(() { 32 defineReflectiveSuite(() {
31 defineReflectiveTests(ClassMemberParserTest_Fasta); 33 defineReflectiveTests(ClassMemberParserTest_Fasta);
(...skipping 2769 matching lines...) Expand 10 before | Expand all | Expand 10 after
2801 _eventListener.end('CompilationUnit'); 2803 _eventListener.end('CompilationUnit');
2802 _astBuilder.className = null; 2804 _astBuilder.className = null;
2803 return result; 2805 return result;
2804 } 2806 }
2805 2807
2806 List<Combinator> parseCombinators() { 2808 List<Combinator> parseCombinators() {
2807 return _run((parser) => parser.parseCombinators); 2809 return _run((parser) => parser.parseCombinators);
2808 } 2810 }
2809 2811
2810 @override 2812 @override
2813 CommentAndMetadata parseCommentAndMetadata() {
2814 List metadata = _run((parser) => parser.parseMetadataStar, nodeCount: -1);
Brian Wilkerson 2017/08/30 16:17:03 I think this method is wrong. After looking at the
danrubel 2017/08/30 16:18:17 Smaller CLs are better in general.
2815 Comment comment = null;
2816 if (metadata.length > 0 && metadata[0] is Comment) {
2817 comment = metadata[0];
2818 if (metadata.length > 1 && metadata[1] is List) {
2819 metadata = metadata[1];
2820 } else {
2821 metadata = metadata.sublist(1);
2822 }
2823 }
2824 for (Object element in metadata) {
2825 if (element is NullValue) {
2826 fail('Expected annotation but found $element');
2827 }
2828 }
2829 return new CommentAndMetadata(comment, new List<Annotation>.from(metadata));
2830 }
2831
2832 @override
2811 CompilationUnit parseCompilationUnit2() { 2833 CompilationUnit parseCompilationUnit2() {
2812 var result = _run(null) as CompilationUnit; 2834 var result = _run(null) as CompilationUnit;
2813 _eventListener.expectEmpty(); 2835 _eventListener.expectEmpty();
2814 return result; 2836 return result;
2815 } 2837 }
2816 2838
2817 @override 2839 @override
2818 Configuration parseConfiguration() { 2840 Configuration parseConfiguration() {
2819 return _run((parser) => parser.parseConditionalUri) as Configuration; 2841 return _run((parser) => parser.parseConditionalUri) as Configuration;
2820 } 2842 }
(...skipping 21 matching lines...) Expand all
2842 TypeAnnotation parseTypeAnnotation(bool inExpression) { 2864 TypeAnnotation parseTypeAnnotation(bool inExpression) {
2843 return _run((parser) => parser.parseType) as TypeAnnotation; 2865 return _run((parser) => parser.parseType) as TypeAnnotation;
2844 } 2866 }
2845 2867
2846 @override 2868 @override
2847 TypeArgumentList parseTypeArgumentList() { 2869 TypeArgumentList parseTypeArgumentList() {
2848 return _run((parser) => parser.parseTypeVariablesOpt) as TypeArgumentList; 2870 return _run((parser) => parser.parseTypeVariablesOpt) as TypeArgumentList;
2849 } 2871 }
2850 2872
2851 /** 2873 /**
2852 * Runs a single parser function, and returns the result as an analyzer AST. 2874 * Runs a single parser function (returned by [getParseFunction]), and returns
2875 * the result as an analyzer AST. It checks that the parse consumed all of the
2876 * tokens and that there were [nodeCount] AST nodes created (unless the node
2877 * count is negative).
2853 */ 2878 */
2854 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { 2879 Object _run(ParseFunction getParseFunction(fasta.Parser parser),
2880 {int nodeCount: 1}) {
2855 ParseFunction parseFunction; 2881 ParseFunction parseFunction;
2856 if (getParseFunction != null) { 2882 if (getParseFunction != null) {
2857 parseFunction = getParseFunction(_fastaParser); 2883 parseFunction = getParseFunction(_fastaParser);
2858 _fastaParser.firstToken = _currentFastaToken; 2884 _fastaParser.firstToken = _currentFastaToken;
2859 } else { 2885 } else {
2860 parseFunction = _fastaParser.parseUnit; 2886 parseFunction = _fastaParser.parseUnit;
2861 // firstToken should be set by beginCompilationUnit event. 2887 // firstToken should be set by beginCompilationUnit event.
2862 } 2888 }
2863 _currentFastaToken = parseFunction(_currentFastaToken); 2889 _currentFastaToken = parseFunction(_currentFastaToken);
2864 expect(_currentFastaToken.isEof, isTrue); 2890 expect(_currentFastaToken.isEof, isTrue);
2865 expect(_astBuilder.stack, hasLength(1)); 2891 if (nodeCount >= 0) {
2892 expect(_astBuilder.stack, hasLength(nodeCount));
2893 }
2894 if (nodeCount != 1) {
2895 return _astBuilder.stack.values;
2896 }
2866 return _astBuilder.pop(); 2897 return _astBuilder.pop();
2867 } 2898 }
2868 } 2899 }
2869 2900
2870 @reflectiveTest 2901 @reflectiveTest
2871 class RecoveryParserTest_Fasta extends FastaParserTestCase 2902 class RecoveryParserTest_Fasta extends FastaParserTestCase
2872 with RecoveryParserTestMixin { 2903 with RecoveryParserTestMixin {
2873 @override 2904 @override
2874 @failingTest 2905 @failingTest
2875 void test_additiveExpression_missing_LHS() { 2906 void test_additiveExpression_missing_LHS() {
(...skipping 930 matching lines...) Expand 10 before | Expand all | Expand 10 after
3806 @failingTest 3837 @failingTest
3807 void test_parseArgumentList_trailing_comma() { 3838 void test_parseArgumentList_trailing_comma() {
3808 // TODO(brianwilkerson) Produces a method invocation rather than an empty 3839 // TODO(brianwilkerson) Produces a method invocation rather than an empty
3809 // argument list. 3840 // argument list.
3810 super.test_parseArgumentList_trailing_comma(); 3841 super.test_parseArgumentList_trailing_comma();
3811 } 3842 }
3812 3843
3813 @override 3844 @override
3814 @failingTest 3845 @failingTest
3815 void test_parseCombinator_hide() { 3846 void test_parseCombinator_hide() {
3816 // TODO(brianwilkerson) exception:
3817 // Uninteresting. Covered by the test_parseCombinators_* methods. 3847 // Uninteresting. Covered by the test_parseCombinators_* methods.
3818 super.test_parseCombinator_hide(); 3848 super.test_parseCombinator_hide();
3819 } 3849 }
3820 3850
3821 @override 3851 @override
3822 @failingTest 3852 @failingTest
3823 void test_parseCombinator_show() { 3853 void test_parseCombinator_show() {
3824 // TODO(brianwilkerson) exception:
3825 // Uninteresting. Covered by the test_parseCombinators_* methods. 3854 // Uninteresting. Covered by the test_parseCombinators_* methods.
3826 super.test_parseCombinator_show(); 3855 super.test_parseCombinator_show();
3827 } 3856 }
3828 3857
3829 @override 3858 @override
3830 @failingTest 3859 @failingTest
3831 void test_parseCombinators_h() {
3832 // TODO(brianwilkerson) Failed to use all tokens.
3833 super.test_parseCombinators_h();
3834 }
3835
3836 @override
3837 @failingTest
3838 void test_parseCombinators_hs() {
3839 // TODO(brianwilkerson) Failed to use all tokens.
3840 super.test_parseCombinators_hs();
3841 }
3842
3843 @override
3844 @failingTest
3845 void test_parseCombinators_hshs() {
3846 // TODO(brianwilkerson) Failed to use all tokens.
3847 super.test_parseCombinators_hshs();
3848 }
3849
3850 @override
3851 @failingTest
3852 void test_parseCombinators_s() {
3853 // TODO(brianwilkerson) Failed to use all tokens.
3854 super.test_parseCombinators_s();
3855 }
3856
3857 @override
3858 @failingTest
3859 void test_parseCommentAndMetadata_c() { 3860 void test_parseCommentAndMetadata_c() {
3860 // TODO(brianwilkerson) exception: 3861 // TODO(brianwilkerson) Expected annotation but found NullValue.Metadata
3861 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3862 super.test_parseCommentAndMetadata_c(); 3862 super.test_parseCommentAndMetadata_c();
3863 } 3863 }
3864 3864
3865 @override 3865 @override
3866 @failingTest 3866 @failingTest
3867 void test_parseCommentAndMetadata_cmc() {
3868 // TODO(brianwilkerson) exception:
3869 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3870 super.test_parseCommentAndMetadata_cmc();
3871 }
3872
3873 @override
3874 @failingTest
3875 void test_parseCommentAndMetadata_cmcm() {
3876 // TODO(brianwilkerson) exception:
3877 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3878 super.test_parseCommentAndMetadata_cmcm();
3879 }
3880
3881 @override
3882 @failingTest
3883 void test_parseCommentAndMetadata_cmm() {
3884 // TODO(brianwilkerson) exception:
3885 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3886 super.test_parseCommentAndMetadata_cmm();
3887 }
3888
3889 @override
3890 @failingTest
3891 void test_parseCommentAndMetadata_m() { 3867 void test_parseCommentAndMetadata_m() {
3892 // TODO(brianwilkerson) exception: 3868 // TODO(brianwilkerson) Expected annotation but found NullValue.Comments
3893 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3894 super.test_parseCommentAndMetadata_m(); 3869 super.test_parseCommentAndMetadata_m();
3895 } 3870 }
3896 3871
3897 @override 3872 @override
3898 @failingTest 3873 @failingTest
3899 void test_parseCommentAndMetadata_mcm() { 3874 void test_parseCommentAndMetadata_mcm() {
3900 // TODO(brianwilkerson) exception: 3875 // TODO(brianwilkerson) Expected annotation but found NullValue.Comments
3901 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3902 super.test_parseCommentAndMetadata_mcm(); 3876 super.test_parseCommentAndMetadata_mcm();
3903 } 3877 }
3904 3878
3905 @override 3879 @override
3906 @failingTest 3880 @failingTest
3907 void test_parseCommentAndMetadata_mcmc() { 3881 void test_parseCommentAndMetadata_mcmc() {
3908 // TODO(brianwilkerson) exception: 3882 // TODO(brianwilkerson) Expected annotation but found NullValue.Comments
3909 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3910 super.test_parseCommentAndMetadata_mcmc(); 3883 super.test_parseCommentAndMetadata_mcmc();
3911 } 3884 }
3912 3885
3913 @override 3886 @override
3914 @failingTest 3887 @failingTest
3915 void test_parseCommentAndMetadata_mm() { 3888 void test_parseCommentAndMetadata_mm() {
3916 // TODO(brianwilkerson) exception: 3889 // TODO(brianwilkerson) Expected annotation but found NullValue.Comments
3917 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3918 super.test_parseCommentAndMetadata_mm(); 3890 super.test_parseCommentAndMetadata_mm();
3919 } 3891 }
3920 3892
3921 @override 3893 @override
3922 @failingTest 3894 @failingTest
3923 void test_parseCommentAndMetadata_none() { 3895 void test_parseCommentAndMetadata_none() {
3924 // TODO(brianwilkerson) exception: 3896 // TODO(brianwilkerson) Expected annotation but found NullValue.Comments
3925 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3926 super.test_parseCommentAndMetadata_none(); 3897 super.test_parseCommentAndMetadata_none();
3927 } 3898 }
3928 3899
3929 @override 3900 @override
3930 @failingTest 3901 @failingTest
3931 void test_parseCommentAndMetadata_singleLine() { 3902 void test_parseCommentAndMetadata_singleLine() {
3932 // TODO(brianwilkerson) exception: 3903 // TODO(brianwilkerson) Expected annotation but found NullValue.Metadata
3933 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseComme ntAndMetadata'.
3934 super.test_parseCommentAndMetadata_singleLine(); 3904 super.test_parseCommentAndMetadata_singleLine();
3935 } 3905 }
3936 3906
3937 @override 3907 @override
3938 @failingTest 3908 @failingTest
3939 void test_parseConfiguration_noOperator_dottedIdentifier() {
3940 // TODO(brianwilkerson) Missing right parenthesis.
3941 super.test_parseConfiguration_noOperator_dottedIdentifier();
3942 }
3943
3944 @override
3945 @failingTest
3946 void test_parseConfiguration_noOperator_simpleIdentifier() {
3947 // TODO(brianwilkerson) Missing right parenthesis.
3948 super.test_parseConfiguration_noOperator_simpleIdentifier();
3949 }
3950
3951 @override
3952 @failingTest
3953 void test_parseConfiguration_operator_dottedIdentifier() {
3954 // TODO(brianwilkerson) Missing right parenthesis.
3955 super.test_parseConfiguration_operator_dottedIdentifier();
3956 }
3957
3958 @override
3959 @failingTest
3960 void test_parseConfiguration_operator_simpleIdentifier() {
3961 // TODO(brianwilkerson) Missing right parenthesis.
3962 super.test_parseConfiguration_operator_simpleIdentifier();
3963 }
3964
3965 @override
3966 @failingTest
3967 void test_parseConstructorName_named_noPrefix() { 3909 void test_parseConstructorName_named_noPrefix() {
3968 // TODO(brianwilkerson) exception: 3910 // TODO(brianwilkerson) exception:
3969 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseConst ructorName'. 3911 // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseConst ructorName'.
3970 super.test_parseConstructorName_named_noPrefix(); 3912 super.test_parseConstructorName_named_noPrefix();
3971 } 3913 }
3972 3914
3973 @override 3915 @override
3974 @failingTest 3916 @failingTest
3975 void test_parseConstructorName_named_prefixed() { 3917 void test_parseConstructorName_named_prefixed() {
3976 // TODO(brianwilkerson) exception: 3918 // TODO(brianwilkerson) exception:
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
4390 @override 4332 @override
4391 @failingTest 4333 @failingTest
4392 void test_parseReturnType_void() { 4334 void test_parseReturnType_void() {
4393 // TODO(brianwilkerson) Test isn't passing in enough context. 4335 // TODO(brianwilkerson) Test isn't passing in enough context.
4394 // Type 'void' can't be used here because it isn't a return type. 4336 // Type 'void' can't be used here because it isn't a return type.
4395 super.test_parseReturnType_void(); 4337 super.test_parseReturnType_void();
4396 } 4338 }
4397 4339
4398 @override 4340 @override
4399 @failingTest 4341 @failingTest
4400 void test_parseTypeAnnotation_function_noReturnType_noParameters() {
4401 // TODO(brianwilkerson) Failed to use all tokens.
4402 super.test_parseTypeAnnotation_function_noReturnType_noParameters();
4403 }
4404
4405 @override
4406 @failingTest
4407 void test_parseTypeAnnotation_function_noReturnType_parameters() {
4408 // TODO(brianwilkerson) Failed to use all tokens.
4409 super.test_parseTypeAnnotation_function_noReturnType_parameters();
4410 }
4411
4412 @override
4413 @failingTest
4414 void test_parseTypeAnnotation_function_returnType_classFunction() {
4415 // TODO(brianwilkerson) Failed to use all tokens.
4416 super.test_parseTypeAnnotation_function_returnType_classFunction();
4417 }
4418
4419 @override
4420 @failingTest
4421 void test_parseTypeAnnotation_function_returnType_function() {
4422 // TODO(brianwilkerson) Failed to use all tokens.
4423 super.test_parseTypeAnnotation_function_returnType_function();
4424 }
4425
4426 @override
4427 @failingTest
4428 void test_parseTypeAnnotation_function_returnType_simple() {
4429 // TODO(brianwilkerson) Failed to use all tokens.
4430 super.test_parseTypeAnnotation_function_returnType_simple();
4431 }
4432
4433 @override
4434 @failingTest
4435 void test_parseTypeAnnotation_function_returnType_withArguments() {
4436 // TODO(brianwilkerson) Failed to use all tokens.
4437 super.test_parseTypeAnnotation_function_returnType_withArguments();
4438 }
4439
4440 @override
4441 @failingTest
4442 void test_parseTypeAnnotation_named() {
4443 // TODO(brianwilkerson) Failed to use all tokens.
4444 super.test_parseTypeAnnotation_named();
4445 }
4446
4447 @override
4448 @failingTest
4449 void test_parseTypeArgumentList_empty() { 4342 void test_parseTypeArgumentList_empty() {
4450 // TODO(brianwilkerson) reportUnrecoverableErrorWithToken 4343 // TODO(brianwilkerson) reportUnrecoverableErrorWithToken
4451 super.test_parseTypeArgumentList_empty(); 4344 super.test_parseTypeArgumentList_empty();
4452 } 4345 }
4453 4346
4454 @override 4347 @override
4455 @failingTest 4348 @failingTest
4456 void test_parseTypeArgumentList_multiple() { 4349 void test_parseTypeArgumentList_multiple() {
4457 // TODO(brianwilkerson) exception: 4350 // TODO(brianwilkerson) exception:
4458 // type 'TypeParameterListImpl' is not a subtype of type 'TypeArgumentList ' in type cast where 4351 // type 'TypeParameterListImpl' is not a subtype of type 'TypeArgumentList ' in type cast where
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
4802 @override 4695 @override
4803 @failingTest 4696 @failingTest
4804 void test_parseDirectives_mixed() { 4697 void test_parseDirectives_mixed() {
4805 // TODO(paulberry,ahe): This test verifies the analyzer parser's ability to 4698 // TODO(paulberry,ahe): This test verifies the analyzer parser's ability to
4806 // stop parsing as soon as the first non-directive is encountered; this is 4699 // stop parsing as soon as the first non-directive is encountered; this is
4807 // useful for quickly traversing an import graph. Consider adding a similar 4700 // useful for quickly traversing an import graph. Consider adding a similar
4808 // ability to Fasta's parser. 4701 // ability to Fasta's parser.
4809 super.test_parseDirectives_mixed(); 4702 super.test_parseDirectives_mixed();
4810 } 4703 }
4811 } 4704 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/fasta/ast_builder.dart ('k') | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698