Chromium Code Reviews| Index: pkg/analyzer/test/generated/parser_fasta_test.dart |
| diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart |
| index 31f1ce3d862b30a97403092baad174669013d698..77c5ceeef6c86d775818373b69c093dc68cd96d0 100644 |
| --- a/pkg/analyzer/test/generated/parser_fasta_test.dart |
| +++ b/pkg/analyzer/test/generated/parser_fasta_test.dart |
| @@ -10,6 +10,7 @@ import 'package:analyzer/error/listener.dart' show ErrorReporter; |
| import 'package:analyzer/src/dart/scanner/scanner.dart'; |
| import 'package:analyzer/src/fasta/ast_builder.dart'; |
| import 'package:analyzer/src/generated/parser.dart' as analyzer; |
| +import 'package:analyzer/src/generated/parser.dart' show CommentAndMetadata; |
| import 'package:analyzer/src/generated/utilities_dart.dart'; |
| import 'package:analyzer/src/string_source.dart'; |
| import 'package:front_end/src/fasta/fasta_codes.dart' show Message; |
| @@ -19,6 +20,7 @@ import 'package:front_end/src/fasta/parser.dart' show IdentifierContext; |
| import 'package:front_end/src/fasta/parser.dart' as fasta; |
| import 'package:front_end/src/fasta/scanner/string_scanner.dart'; |
| import 'package:front_end/src/fasta/scanner/token.dart' as fasta; |
| +import 'package:front_end/src/fasta/source/stack_listener.dart'; |
| import 'package:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| @@ -2808,6 +2810,26 @@ class ParserProxy implements analyzer.Parser { |
| } |
| @override |
| + CommentAndMetadata parseCommentAndMetadata() { |
| + 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.
|
| + Comment comment = null; |
| + if (metadata.length > 0 && metadata[0] is Comment) { |
| + comment = metadata[0]; |
| + if (metadata.length > 1 && metadata[1] is List) { |
| + metadata = metadata[1]; |
| + } else { |
| + metadata = metadata.sublist(1); |
| + } |
| + } |
| + for (Object element in metadata) { |
| + if (element is NullValue) { |
| + fail('Expected annotation but found $element'); |
| + } |
| + } |
| + return new CommentAndMetadata(comment, new List<Annotation>.from(metadata)); |
| + } |
| + |
| + @override |
| CompilationUnit parseCompilationUnit2() { |
| var result = _run(null) as CompilationUnit; |
| _eventListener.expectEmpty(); |
| @@ -2849,9 +2871,13 @@ class ParserProxy implements analyzer.Parser { |
| } |
| /** |
| - * Runs a single parser function, and returns the result as an analyzer AST. |
| + * Runs a single parser function (returned by [getParseFunction]), and returns |
| + * the result as an analyzer AST. It checks that the parse consumed all of the |
| + * tokens and that there were [nodeCount] AST nodes created (unless the node |
| + * count is negative). |
| */ |
| - Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { |
| + Object _run(ParseFunction getParseFunction(fasta.Parser parser), |
| + {int nodeCount: 1}) { |
| ParseFunction parseFunction; |
| if (getParseFunction != null) { |
| parseFunction = getParseFunction(_fastaParser); |
| @@ -2862,7 +2888,12 @@ class ParserProxy implements analyzer.Parser { |
| } |
| _currentFastaToken = parseFunction(_currentFastaToken); |
| expect(_currentFastaToken.isEof, isTrue); |
| - expect(_astBuilder.stack, hasLength(1)); |
| + if (nodeCount >= 0) { |
| + expect(_astBuilder.stack, hasLength(nodeCount)); |
| + } |
| + if (nodeCount != 1) { |
| + return _astBuilder.stack.values; |
| + } |
| return _astBuilder.pop(); |
| } |
| } |
| @@ -3813,7 +3844,6 @@ class SimpleParserTest_Fasta extends FastaParserTestCase |
| @override |
| @failingTest |
| void test_parseCombinator_hide() { |
| - // TODO(brianwilkerson) exception: |
| // Uninteresting. Covered by the test_parseCombinators_* methods. |
| super.test_parseCombinator_hide(); |
| } |
| @@ -3821,149 +3851,61 @@ class SimpleParserTest_Fasta extends FastaParserTestCase |
| @override |
| @failingTest |
| void test_parseCombinator_show() { |
| - // TODO(brianwilkerson) exception: |
| // Uninteresting. Covered by the test_parseCombinators_* methods. |
| super.test_parseCombinator_show(); |
| } |
| @override |
| @failingTest |
| - void test_parseCombinators_h() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseCombinators_h(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseCombinators_hs() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseCombinators_hs(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseCombinators_hshs() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseCombinators_hshs(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseCombinators_s() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseCombinators_s(); |
| - } |
| - |
| - @override |
| - @failingTest |
| void test_parseCommentAndMetadata_c() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Metadata |
| super.test_parseCommentAndMetadata_c(); |
| } |
| @override |
| @failingTest |
| - void test_parseCommentAndMetadata_cmc() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| - super.test_parseCommentAndMetadata_cmc(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseCommentAndMetadata_cmcm() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| - super.test_parseCommentAndMetadata_cmcm(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseCommentAndMetadata_cmm() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| - super.test_parseCommentAndMetadata_cmm(); |
| - } |
| - |
| - @override |
| - @failingTest |
| void test_parseCommentAndMetadata_m() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Comments |
| super.test_parseCommentAndMetadata_m(); |
| } |
| @override |
| @failingTest |
| void test_parseCommentAndMetadata_mcm() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Comments |
| super.test_parseCommentAndMetadata_mcm(); |
| } |
| @override |
| @failingTest |
| void test_parseCommentAndMetadata_mcmc() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Comments |
| super.test_parseCommentAndMetadata_mcmc(); |
| } |
| @override |
| @failingTest |
| void test_parseCommentAndMetadata_mm() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Comments |
| super.test_parseCommentAndMetadata_mm(); |
| } |
| @override |
| @failingTest |
| void test_parseCommentAndMetadata_none() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Comments |
| super.test_parseCommentAndMetadata_none(); |
| } |
| @override |
| @failingTest |
| void test_parseCommentAndMetadata_singleLine() { |
| - // TODO(brianwilkerson) exception: |
| - // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseCommentAndMetadata'. |
| + // TODO(brianwilkerson) Expected annotation but found NullValue.Metadata |
| super.test_parseCommentAndMetadata_singleLine(); |
| } |
| @override |
| @failingTest |
| - void test_parseConfiguration_noOperator_dottedIdentifier() { |
| - // TODO(brianwilkerson) Missing right parenthesis. |
| - super.test_parseConfiguration_noOperator_dottedIdentifier(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseConfiguration_noOperator_simpleIdentifier() { |
| - // TODO(brianwilkerson) Missing right parenthesis. |
| - super.test_parseConfiguration_noOperator_simpleIdentifier(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseConfiguration_operator_dottedIdentifier() { |
| - // TODO(brianwilkerson) Missing right parenthesis. |
| - super.test_parseConfiguration_operator_dottedIdentifier(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseConfiguration_operator_simpleIdentifier() { |
| - // TODO(brianwilkerson) Missing right parenthesis. |
| - super.test_parseConfiguration_operator_simpleIdentifier(); |
| - } |
| - |
| - @override |
| - @failingTest |
| void test_parseConstructorName_named_noPrefix() { |
| // TODO(brianwilkerson) exception: |
| // NoSuchMethodError: Class 'ParserProxy' has no instance method 'parseConstructorName'. |
| @@ -4397,55 +4339,6 @@ class SimpleParserTest_Fasta extends FastaParserTestCase |
| @override |
| @failingTest |
| - void test_parseTypeAnnotation_function_noReturnType_noParameters() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_noReturnType_noParameters(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_function_noReturnType_parameters() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_noReturnType_parameters(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_function_returnType_classFunction() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_returnType_classFunction(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_function_returnType_function() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_returnType_function(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_function_returnType_simple() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_returnType_simple(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_function_returnType_withArguments() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_function_returnType_withArguments(); |
| - } |
| - |
| - @override |
| - @failingTest |
| - void test_parseTypeAnnotation_named() { |
| - // TODO(brianwilkerson) Failed to use all tokens. |
| - super.test_parseTypeAnnotation_named(); |
| - } |
| - |
| - @override |
| - @failingTest |
| void test_parseTypeArgumentList_empty() { |
| // TODO(brianwilkerson) reportUnrecoverableErrorWithToken |
| super.test_parseTypeArgumentList_empty(); |