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

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

Issue 2713553011: Split parser tests that exercise class members to their own class. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/element/element.dart'; 6 import 'package:analyzer/dart/element/element.dart';
7 import 'package:analyzer/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/src/generated/parser.dart' as analyzer; 8 import 'package:analyzer/src/generated/parser.dart' as analyzer;
9 import 'package:analyzer/src/generated/utilities_dart.dart'; 9 import 'package:analyzer/src/generated/utilities_dart.dart';
10 import 'package:front_end/src/fasta/analyzer/ast_builder.dart'; 10 import 'package:front_end/src/fasta/analyzer/ast_builder.dart';
11 import 'package:front_end/src/fasta/analyzer/element_store.dart'; 11 import 'package:front_end/src/fasta/analyzer/element_store.dart';
12 import 'package:front_end/src/fasta/builder/scope.dart'; 12 import 'package:front_end/src/fasta/builder/scope.dart';
13 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; 13 import 'package:front_end/src/fasta/kernel/kernel_builder.dart';
14 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; 14 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart';
15 import 'package:front_end/src/fasta/parser/parser.dart' as fasta; 15 import 'package:front_end/src/fasta/parser/parser.dart' as fasta;
16 import 'package:front_end/src/fasta/scanner/precedence.dart' as fasta;
16 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; 17 import 'package:front_end/src/fasta/scanner/string_scanner.dart';
17 import 'package:front_end/src/fasta/scanner/token.dart' as fasta; 18 import 'package:front_end/src/fasta/scanner/token.dart' as fasta;
18 import 'package:test/test.dart'; 19 import 'package:test/test.dart';
19 import 'package:test_reflective_loader/test_reflective_loader.dart'; 20 import 'package:test_reflective_loader/test_reflective_loader.dart';
20 21
21 import 'parser_test.dart'; 22 import 'parser_test.dart';
22 23
23 main() { 24 main() {
24 defineReflectiveSuite(() { 25 defineReflectiveSuite(() {
26 defineReflectiveTests(ClassMemberParserTest_Fasta);
25 defineReflectiveTests(ComplexParserTest_Fasta); 27 defineReflectiveTests(ComplexParserTest_Fasta);
26 defineReflectiveTests(FormalParameterParserTest_Fasta); 28 defineReflectiveTests(FormalParameterParserTest_Fasta);
27 defineReflectiveTests(TopLevelParserTest_Fasta); 29 defineReflectiveTests(TopLevelParserTest_Fasta);
28 }); 30 });
29 } 31 }
30 32
31 /** 33 /**
32 * Type of the "parse..." methods defined in the Fasta parser. 34 * Type of the "parse..." methods defined in the Fasta parser.
33 */ 35 */
34 typedef fasta.Token ParseFunction(fasta.Token token); 36 typedef fasta.Token ParseFunction(fasta.Token token);
35 37
36 /** 38 /**
37 * Proxy implementation of [Builder] used by Fasta parser tests. 39 * Proxy implementation of [Builder] used by Fasta parser tests.
38 * 40 *
39 * All undeclared identifiers are presumed to resolve via an instance of this 41 * All undeclared identifiers are presumed to resolve via an instance of this
40 * class. 42 * class.
41 */ 43 */
42 class BuilderProxy implements Builder { 44 class BuilderProxy implements Builder {
43 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 45 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
44 } 46 }
45 47
48 @reflectiveTest
49 class ClassMemberParserTest_Fasta extends FastaParserTestCase
50 with ClassMemberParserTestMixin {
51 @override
52 @failingTest
53 void test_constFactory() {
54 // TODO(paulberry): Unhandled event: ConstructorReference
55 super.test_constFactory();
56 }
57
58 @override
59 @failingTest
60 void test_parseAwaitExpression_asStatement_inAsync() {
61 // TODO(paulberry): Add support for async
62 super.test_parseAwaitExpression_asStatement_inAsync();
63 }
64
65 @override
66 @failingTest
67 void test_parseAwaitExpression_asStatement_inSync() {
68 // TODO(paulberry): Add support for method declarations
69 super.test_parseAwaitExpression_asStatement_inSync();
70 }
71
72 @override
73 @failingTest
74 void test_parseClassMember_constructor_withInitializers() {
75 // TODO(paulberry): 'this' can't be used here.
76 super.test_parseClassMember_constructor_withInitializers();
77 }
78
79 @override
80 @failingTest
81 void test_parseClassMember_field_covariant() {
82 // TODO(paulberry): Unhandled event: Fields
83 super.test_parseClassMember_field_covariant();
84 }
85
86 @override
87 @failingTest
88 void test_parseClassMember_field_instance_prefixedType() {
89 // TODO(paulberry): Unhandled event: Fields
90 super.test_parseClassMember_field_instance_prefixedType();
91 }
92
93 @override
94 @failingTest
95 void test_parseClassMember_field_namedGet() {
96 // TODO(paulberry): Unhandled event: Fields
97 super.test_parseClassMember_field_namedGet();
98 }
99
100 @override
101 @failingTest
102 void test_parseClassMember_field_namedOperator() {
103 // TODO(paulberry): Unhandled event: Fields
104 super.test_parseClassMember_field_namedOperator();
105 }
106
107 @override
108 @failingTest
109 void test_parseClassMember_field_namedOperator_withAssignment() {
110 // TODO(paulberry): Unhandled event: Fields
111 super.test_parseClassMember_field_namedOperator_withAssignment();
112 }
113
114 @override
115 @failingTest
116 void test_parseClassMember_field_namedSet() {
117 // TODO(paulberry): Unhandled event: Fields
118 super.test_parseClassMember_field_namedSet();
119 }
120
121 @override
122 @failingTest
123 void test_parseClassMember_field_static() {
124 // TODO(paulberry): Unhandled event: Fields
125 super.test_parseClassMember_field_static();
126 }
127
128 @override
129 @failingTest
130 void test_parseClassMember_getter_functionType() {
131 // TODO(paulberry): InputError: ErrorKind.ExpectedFunctionBody {actual: get}
132 super.test_parseClassMember_getter_functionType();
133 }
134
135 @override
136 @failingTest
137 void test_parseClassMember_getter_void() {
138 // TODO(paulberry): Add support for method declarations
139 super.test_parseClassMember_getter_void();
140 }
141
142 @override
143 @failingTest
144 void test_parseClassMember_method_external() {
145 // TODO(paulberry): Add support for method declarations
146 super.test_parseClassMember_method_external();
147 }
148
149 @override
150 @failingTest
151 void test_parseClassMember_method_external_withTypeAndArgs() {
152 // TODO(paulberry): Add support for method declarations
153 super.test_parseClassMember_method_external_withTypeAndArgs();
154 }
155
156 @override
157 @failingTest
158 void test_parseClassMember_method_generic_comment_noReturnType() {
159 // TODO(paulberry): Fasta doesn't support generic comment syntax
160 super.test_parseClassMember_method_generic_comment_noReturnType();
161 }
162
163 @override
164 @failingTest
165 void test_parseClassMember_method_generic_comment_returnType() {
166 // TODO(paulberry): Fasta doesn't support generic comment syntax
167 super.test_parseClassMember_method_generic_comment_returnType();
168 }
169
170 @override
171 @failingTest
172 void test_parseClassMember_method_generic_comment_returnType_bound() {
173 // TODO(paulberry): Fasta doesn't support generic comment syntax
174 super.test_parseClassMember_method_generic_comment_returnType_bound();
175 }
176
177 @override
178 @failingTest
179 void test_parseClassMember_method_generic_comment_void() {
180 // TODO(paulberry): Fasta doesn't support generic comment syntax
181 super.test_parseClassMember_method_generic_comment_void();
182 }
183
184 @override
185 @failingTest
186 void test_parseClassMember_method_generic_noReturnType() {
187 // TODO(paulberry): Add support for method declarations
188 super.test_parseClassMember_method_generic_noReturnType();
189 }
190
191 @override
192 @failingTest
193 void test_parseClassMember_method_generic_returnType() {
194 // TODO(paulberry): Add support for method declarations
195 super.test_parseClassMember_method_generic_returnType();
196 }
197
198 @override
199 @failingTest
200 void test_parseClassMember_method_generic_void() {
201 // TODO(paulberry): Add support for method declarations
202 super.test_parseClassMember_method_generic_void();
203 }
204
205 @override
206 @failingTest
207 void test_parseClassMember_method_get_noType() {
208 // TODO(paulberry): Add support for method declarations
209 super.test_parseClassMember_method_get_noType();
210 }
211
212 @override
213 @failingTest
214 void test_parseClassMember_method_get_type() {
215 // TODO(paulberry): Add support for method declarations
216 super.test_parseClassMember_method_get_type();
217 }
218
219 @override
220 @failingTest
221 void test_parseClassMember_method_get_void() {
222 // TODO(paulberry): Add support for method declarations
223 super.test_parseClassMember_method_get_void();
224 }
225
226 @override
227 @failingTest
228 void test_parseClassMember_method_operator_noType() {
229 // TODO(paulberry): Add support for method declarations
230 super.test_parseClassMember_method_operator_noType();
231 }
232
233 @override
234 @failingTest
235 void test_parseClassMember_method_operator_type() {
236 // TODO(paulberry): Add support for method declarations
237 super.test_parseClassMember_method_operator_type();
238 }
239
240 @override
241 @failingTest
242 void test_parseClassMember_method_operator_void() {
243 // TODO(paulberry): Add support for method declarations
244 super.test_parseClassMember_method_operator_void();
245 }
246
247 @override
248 @failingTest
249 void test_parseClassMember_method_returnType_functionType() {
250 // TODO(paulberry): InputError: ErrorKind.ExpectedFunctionBody {actual: m}
251 super.test_parseClassMember_method_returnType_functionType();
252 }
253
254 @override
255 @failingTest
256 void test_parseClassMember_method_returnType_parameterized() {
257 // TODO(paulberry): Add support for method declarations
258 super.test_parseClassMember_method_returnType_parameterized();
259 }
260
261 @override
262 @failingTest
263 void test_parseClassMember_method_set_noType() {
264 // TODO(paulberry): Add support for method declarations
265 super.test_parseClassMember_method_set_noType();
266 }
267
268 @override
269 @failingTest
270 void test_parseClassMember_method_set_type() {
271 // TODO(paulberry): Add support for method declarations
272 super.test_parseClassMember_method_set_type();
273 }
274
275 @override
276 @failingTest
277 void test_parseClassMember_method_set_void() {
278 // TODO(paulberry): Add support for method declarations
279 super.test_parseClassMember_method_set_void();
280 }
281
282 @override
283 @failingTest
284 void test_parseClassMember_method_trailing_commas() {
285 // TODO(paulberry): Add support for method declarations
286 super.test_parseClassMember_method_trailing_commas();
287 }
288
289 @override
290 @failingTest
291 void test_parseClassMember_operator_functionType() {
292 // TODO(paulberry): InputError: ErrorKind.ExpectedFunctionBody {actual: oper ator}
293 super.test_parseClassMember_operator_functionType();
294 }
295
296 @override
297 @failingTest
298 void test_parseClassMember_operator_index() {
299 // TODO(paulberry): Unhandled event: OperatorName
300 super.test_parseClassMember_operator_index();
301 }
302
303 @override
304 @failingTest
305 void test_parseClassMember_operator_indexAssign() {
306 // TODO(paulberry): Unhandled event: OperatorName
307 super.test_parseClassMember_operator_indexAssign();
308 }
309
310 @override
311 @failingTest
312 void test_parseClassMember_redirectingFactory_const() {
313 // TODO(paulberry): Unhandled event: ConstructorReference
314 super.test_parseClassMember_redirectingFactory_const();
315 }
316
317 @override
318 @failingTest
319 void test_parseClassMember_redirectingFactory_nonConst() {
320 // TODO(paulberry): Unhandled event: ConstructorReference
321 super.test_parseClassMember_redirectingFactory_nonConst();
322 }
323
324 @override
325 @failingTest
326 void test_parseConstructor_assert() {
327 // TODO(paulberry): Fasta doesn't support asserts in initializers
328 super.test_parseConstructor_assert();
329 }
330
331 @override
332 @failingTest
333 void test_parseConstructor_with_pseudo_function_literal() {
334 // TODO(paulberry): Expected: an object with length of <1>
335 super.test_parseConstructor_with_pseudo_function_literal();
336 }
337
338 @override
339 @failingTest
340 void test_parseConstructorFieldInitializer_qualified() {
341 // TODO(paulberry): Unhandled event: ThisExpression
342 super.test_parseConstructorFieldInitializer_qualified();
343 }
344
345 @override
346 @failingTest
347 void test_parseConstructorFieldInitializer_unqualified() {
348 // TODO(paulberry): Expected: an object with length of <1>
349 super.test_parseConstructorFieldInitializer_unqualified();
350 }
351
352 @override
353 @failingTest
354 void test_parseGetter_nonStatic() {
355 // TODO(paulberry): Add support for method declarations
356 super.test_parseGetter_nonStatic();
357 }
358
359 @override
360 @failingTest
361 void test_parseGetter_static() {
362 // TODO(paulberry): Invalid modifier (static). Report an error.
363 super.test_parseGetter_static();
364 }
365
366 @override
367 @failingTest
368 void test_parseInitializedIdentifierList_type() {
369 // TODO(paulberry): Unhandled event: Fields
370 super.test_parseInitializedIdentifierList_type();
371 }
372
373 @override
374 @failingTest
375 void test_parseInitializedIdentifierList_var() {
376 // TODO(paulberry): Unhandled event: Fields
377 super.test_parseInitializedIdentifierList_var();
378 }
379
380 @override
381 @failingTest
382 void test_parseOperator() {
383 // TODO(paulberry): Unhandled event: OperatorName
384 super.test_parseOperator();
385 }
386
387 @override
388 @failingTest
389 void test_parseSetter_nonStatic() {
390 // TODO(paulberry): Add support for method declarations
391 super.test_parseSetter_nonStatic();
392 }
393
394 @override
395 @failingTest
396 void test_parseSetter_static() {
397 // TODO(paulberry): Invalid modifier (static). Report an error.
398 super.test_parseSetter_static();
399 }
400 }
401
46 /** 402 /**
47 * Tests of the fasta parser based on [ComplexParserTestMixin]. 403 * Tests of the fasta parser based on [ComplexParserTestMixin].
48 */ 404 */
49 @reflectiveTest 405 @reflectiveTest
50 class ComplexParserTest_Fasta extends FastaParserTestCase 406 class ComplexParserTest_Fasta extends FastaParserTestCase
51 with ComplexParserTestMixin { 407 with ComplexParserTestMixin {
52 @override 408 @override
53 @failingTest 409 @failingTest
54 void test_additiveExpression_precedence_multiplicative_left_withSuper() { 410 void test_additiveExpression_precedence_multiplicative_left_withSuper() {
55 // TODO(paulberry,ahe): AstBuilder doesn't implement 411 // TODO(paulberry,ahe): AstBuilder doesn't implement
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 /** 606 /**
251 * Implementation of [AbstractParserTestCase] specialized for testing the 607 * Implementation of [AbstractParserTestCase] specialized for testing the
252 * Fasta parser. 608 * Fasta parser.
253 */ 609 */
254 class FastaParserTestCase extends Object 610 class FastaParserTestCase extends Object
255 with ParserTestHelpers 611 with ParserTestHelpers
256 implements AbstractParserTestCase { 612 implements AbstractParserTestCase {
257 ParserProxy _parserProxy; 613 ParserProxy _parserProxy;
258 614
259 @override 615 @override
616 set enableAssertInitializer(bool value) {
617 if (value == true) {
618 // TODO(paulberry,ahe): it looks like asserts in initializer lists are not
619 // supported by Fasta.
620 throw new UnimplementedError();
621 }
622 }
623
624 @override
260 set enableGenericMethodComments(bool value) { 625 set enableGenericMethodComments(bool value) {
261 if (value == true) { 626 if (value == true) {
262 // TODO(paulberry,ahe): generic method comment syntax is not supported by 627 // TODO(paulberry,ahe): generic method comment syntax is not supported by
263 // Fasta. 628 // Fasta.
264 throw new UnimplementedError(); 629 throw new UnimplementedError();
265 } 630 }
266 } 631 }
267 632
268 @override 633 @override
269 set enableNnbd(bool value) { 634 set enableNnbd(bool value) {
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 var astBuilder = new AstBuilder(library, member, elementStore, scope); 1136 var astBuilder = new AstBuilder(library, member, elementStore, scope);
772 return new ParserProxy._( 1137 return new ParserProxy._(
773 startingToken, new fasta.Parser(astBuilder), astBuilder); 1138 startingToken, new fasta.Parser(astBuilder), astBuilder);
774 } 1139 }
775 1140
776 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder); 1141 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder);
777 1142
778 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 1143 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
779 1144
780 @override 1145 @override
1146 ClassMember parseClassMember(String className) {
1147 _astBuilder.className = className;
1148 var result = _run((parser) => parser.parseMember) as ClassMember;
1149 _astBuilder.className = null;
1150 return result;
1151 }
1152
1153 @override
781 CompilationUnit parseCompilationUnit2() { 1154 CompilationUnit parseCompilationUnit2() {
782 return _run((parser) => parser.parseUnit) as CompilationUnit; 1155 return _run((parser) => parser.parseUnit) as CompilationUnit;
783 } 1156 }
784 1157
1158 @override
1159 ConstructorFieldInitializer parseConstructorFieldInitializer(bool hasThis) {
1160 // Fasta's parser doesn't need the [hasThis] hint, so we ignore it.
1161 var colon = new fasta.SymbolToken(fasta.COLON_INFO, 0);
1162 colon.next = _currentFastaToken;
1163 _currentFastaToken = colon;
1164 var initializers = _run((parser) => parser.parseInitializers) as List;
1165 return initializers[0] as ConstructorFieldInitializer;
1166 }
1167
785 /** 1168 /**
786 * Runs a single parser function, and returns the result as an analyzer AST. 1169 * Runs a single parser function, and returns the result as an analyzer AST.
787 */ 1170 */
788 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { 1171 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) {
789 var parseFunction = getParseFunction(_fastaParser); 1172 var parseFunction = getParseFunction(_fastaParser);
790 _currentFastaToken = parseFunction(_currentFastaToken); 1173 _currentFastaToken = parseFunction(_currentFastaToken);
791 expect(_currentFastaToken.isEof, isTrue); 1174 expect(_currentFastaToken.isEof, isTrue);
792 expect(_astBuilder.stack, hasLength(1)); 1175 expect(_astBuilder.stack, hasLength(1));
793 return _astBuilder.pop(); 1176 return _astBuilder.pop();
794 } 1177 }
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 void test_parseTypeAlias_genericFunction_typeParameters_voidReturnType() { 1462 void test_parseTypeAlias_genericFunction_typeParameters_voidReturnType() {
1080 super.test_parseTypeAlias_genericFunction_typeParameters_voidReturnType(); 1463 super.test_parseTypeAlias_genericFunction_typeParameters_voidReturnType();
1081 } 1464 }
1082 1465
1083 @override 1466 @override
1084 @failingTest 1467 @failingTest
1085 void test_parseTypeAlias_genericFunction_voidReturnType() { 1468 void test_parseTypeAlias_genericFunction_voidReturnType() {
1086 super.test_parseTypeAlias_genericFunction_voidReturnType(); 1469 super.test_parseTypeAlias_genericFunction_voidReturnType();
1087 } 1470 }
1088 } 1471 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698