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

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

Issue 2683543006: Make some parser test helper methods non-static. (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
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:front_end/src/fasta/analyzer/ast_builder.dart'; 8 import 'package:front_end/src/fasta/analyzer/ast_builder.dart';
9 import 'package:front_end/src/fasta/analyzer/element_store.dart'; 9 import 'package:front_end/src/fasta/analyzer/element_store.dart';
10 import 'package:front_end/src/fasta/builder/scope.dart'; 10 import 'package:front_end/src/fasta/builder/scope.dart';
11 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; 11 import 'package:front_end/src/fasta/kernel/kernel_builder.dart';
12 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; 12 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart';
13 import 'package:front_end/src/fasta/parser/parser.dart'; 13 import 'package:front_end/src/fasta/parser/parser.dart';
14 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; 14 import 'package:front_end/src/fasta/scanner/string_scanner.dart';
15 import 'package:front_end/src/fasta/scanner/token.dart';
15 import 'package:test/test.dart'; 16 import 'package:test/test.dart';
16 import 'package:test_reflective_loader/test_reflective_loader.dart'; 17 import 'package:test_reflective_loader/test_reflective_loader.dart';
17 18
18 import 'parser_test.dart'; 19 import 'parser_test.dart';
19 20
20 main() { 21 main() {
21 defineReflectiveSuite(() { 22 defineReflectiveSuite(() {
22 defineReflectiveTests(ComplexParserTest_Fasta); 23 defineReflectiveTests(ComplexParserTest_Fasta);
23 }); 24 });
24 } 25 }
25 26
26 /** 27 /**
28 * Type of the "parse..." methods defined in the Fasta parser.
29 */
30 typedef Token ParseFunction(Token token);
31
32 /**
27 * Proxy implementation of [Builder] used by Fasta parser tests. 33 * Proxy implementation of [Builder] used by Fasta parser tests.
28 * 34 *
29 * All undeclared identifiers are presumed to resolve via an instance of this 35 * All undeclared identifiers are presumed to resolve via an instance of this
30 * class. 36 * class.
31 */ 37 */
32 class BuilderProxy implements Builder { 38 class BuilderProxy implements Builder {
33 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 39 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
34 } 40 }
35 41
36 /** 42 /**
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 142
137 @override 143 @override
138 @failingTest 144 @failingTest
139 void test_conditionalExpression_precedence_nullableType_is() { 145 void test_conditionalExpression_precedence_nullableType_is() {
140 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet. 146 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet.
141 super.test_conditionalExpression_precedence_nullableType_is(); 147 super.test_conditionalExpression_precedence_nullableType_is();
142 } 148 }
143 149
144 @override 150 @override
145 @failingTest 151 @failingTest
152 void test_constructor_initializer_withParenthesizedExpression() {
153 // TODO(paulberry): Implement parseCompilationUnitWithOptions
154 super.test_constructor_initializer_withParenthesizedExpression();
155 }
156
157 @override
158 @failingTest
146 void test_equalityExpression_normal() { 159 void test_equalityExpression_normal() {
147 // TODO(paulberry,ahe): bad error recovery 160 // TODO(paulberry,ahe): bad error recovery
148 super.test_equalityExpression_normal(); 161 super.test_equalityExpression_normal();
149 } 162 }
150 163
151 @override 164 @override
152 @failingTest 165 @failingTest
153 void test_equalityExpression_super() { 166 void test_equalityExpression_super() {
154 // TODO(paulberry,ahe): AstBuilder doesn't implement 167 // TODO(paulberry,ahe): AstBuilder doesn't implement
155 // handleSuperExpression(). 168 // handleSuperExpression().
156 super.test_equalityExpression_super(); 169 super.test_equalityExpression_super();
157 } 170 }
158 171
159 @override 172 @override
160 @failingTest 173 @failingTest
161 void test_logicalAndExpression_precedence_nullableType() { 174 void test_logicalAndExpression_precedence_nullableType() {
162 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet. 175 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet.
163 super.test_logicalAndExpression_precedence_nullableType(); 176 super.test_logicalAndExpression_precedence_nullableType();
164 } 177 }
165 178
166 @override 179 @override
167 @failingTest 180 @failingTest
168 void test_logicalOrExpression_precedence_nullableType() { 181 void test_logicalOrExpression_precedence_nullableType() {
169 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet. 182 // TODO(paulberry,ahe): Fasta doesn't support NNBD syntax yet.
170 super.test_logicalOrExpression_precedence_nullableType(); 183 super.test_logicalOrExpression_precedence_nullableType();
171 } 184 }
172 185
173 @override 186 @override
174 @failingTest 187 @failingTest
188 void test_multipleLabels_statement() {
189 // TODO(paulberry,ahe): AstBuilder doesn't implement handleLabel().
190 super.test_multipleLabels_statement();
191 }
192
193 @override
194 @failingTest
175 void test_multiplicativeExpression_super() { 195 void test_multiplicativeExpression_super() {
176 // TODO(paulberry,ahe): AstBuilder doesn't implement 196 // TODO(paulberry,ahe): AstBuilder doesn't implement
177 // handleSuperExpression(). 197 // handleSuperExpression().
178 super.test_multiplicativeExpression_super(); 198 super.test_multiplicativeExpression_super();
179 } 199 }
180 200
181 @override 201 @override
182 @failingTest 202 @failingTest
183 void test_shiftExpression_super() { 203 void test_shiftExpression_super() {
184 // TODO(paulberry,ahe): AstBuilder doesn't implement 204 // TODO(paulberry,ahe): AstBuilder doesn't implement
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 @override 260 @override
241 set enableNnbd(bool value) { 261 set enableNnbd(bool value) {
242 if (value == true) { 262 if (value == true) {
243 // TODO(paulberry,ahe): non-null-by-default syntax is not supported by 263 // TODO(paulberry,ahe): non-null-by-default syntax is not supported by
244 // Fasta. 264 // Fasta.
245 throw new UnimplementedError(); 265 throw new UnimplementedError();
246 } 266 }
247 } 267 }
248 268
249 @override 269 @override
270 CompilationUnit parseCompilationUnit(String source,
271 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
272 // TODO(paulberry): implement parseCompilationUnit
273 throw new UnimplementedError();
274 }
275
276 @override
250 CompilationUnit parseCompilationUnitWithOptions(String source, 277 CompilationUnit parseCompilationUnitWithOptions(String source,
251 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { 278 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
252 // TODO(paulberry): implement parseCompilationUnitWithOptions 279 // TODO(paulberry): implement parseCompilationUnitWithOptions
253 throw new UnimplementedError(); 280 throw new UnimplementedError();
254 } 281 }
255 282
256 @override 283 @override
257 Expression parseExpression(String source, 284 Expression parseExpression(String source,
258 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { 285 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
286 return _runParser(source, (parser) => parser.parseExpression, errorCodes);
287 }
288
289 @override
290 Statement parseStatement(String source,
291 [List<ErrorCode> errorCodes = const <ErrorCode>[],
292 bool enableLazyAssignmentOperators]) {
293 return _runParser(source, (parser) => parser.parseStatement, errorCodes);
294 }
295
296 Object _runParser(String source, ParseFunction getParseFuction(Parser parser),
297 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
298 if (errorCodes.isNotEmpty) {
299 // TODO(paulberry): Check that the parser generates the proper errors.
300 throw new UnimplementedError();
301 }
259 var scanner = new StringScanner(source); 302 var scanner = new StringScanner(source);
260 var token = scanner.tokenize(); 303 var token = scanner.tokenize();
261 var library = new KernelLibraryBuilderProxy(); 304 var library = new KernelLibraryBuilderProxy();
262 var member = new BuilderProxy(); 305 var member = new BuilderProxy();
263 var elementStore = new ElementStoreProxy(); 306 var elementStore = new ElementStoreProxy();
264 var scope = new ScopeProxy(); 307 var scope = new ScopeProxy();
265 var astBuilder = new AstBuilder(library, member, elementStore, scope); 308 var astBuilder = new AstBuilder(library, member, elementStore, scope);
266 var parser = new Parser(astBuilder); 309 var parser = new Parser(astBuilder);
267 var endToken = parser.parseExpression(token); 310 var parseFunction = getParseFuction(parser);
311 var endToken = parseFunction(token);
268 expect(endToken.isEof, isTrue); 312 expect(endToken.isEof, isTrue);
269 expect(astBuilder.stack, hasLength(1)); 313 expect(astBuilder.stack, hasLength(1));
270 var expression = astBuilder.pop() as Expression; 314 return astBuilder.pop();
271 return expression;
272 } 315 }
273 } 316 }
274 317
275 /** 318 /**
276 * Proxy implementation of [KernelClassElement] used by Fasta parser tests. 319 * Proxy implementation of [KernelClassElement] used by Fasta parser tests.
277 * 320 *
278 * Any element used as a type name is presumed to refer to an instance of this 321 * Any element used as a type name is presumed to refer to an instance of this
279 * class. 322 * class.
280 */ 323 */
281 class InterfaceTypeProxy implements KernelInterfaceType { 324 class InterfaceTypeProxy implements KernelInterfaceType {
(...skipping 18 matching lines...) Expand all
300 * [BuilderProxy]. 343 * [BuilderProxy].
301 */ 344 */
302 class ScopeProxy implements Scope { 345 class ScopeProxy implements Scope {
303 final _locals = <String, Builder>{}; 346 final _locals = <String, Builder>{};
304 347
305 Builder lookup(String name) => 348 Builder lookup(String name) =>
306 _locals.putIfAbsent(name, () => new BuilderProxy()); 349 _locals.putIfAbsent(name, () => new BuilderProxy());
307 350
308 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 351 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
309 } 352 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/all_the_rest_test.dart ('k') | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698