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

Side by Side Diff: pkg/front_end/test/scanner_fasta_test.dart

Issue 2899043006: cleanup fasta token classes (Closed)
Patch Set: Created 3 years, 7 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/src/fasta/token_utils.dart'; 5 import 'package:analyzer/src/fasta/token_utils.dart';
6 import 'package:front_end/src/fasta/scanner/error_token.dart' as fasta; 6 import 'package:front_end/src/fasta/scanner/error_token.dart' as fasta;
7 import 'package:front_end/src/fasta/scanner/string_scanner.dart' as fasta; 7 import 'package:front_end/src/fasta/scanner/string_scanner.dart' as fasta;
8 import 'package:front_end/src/fasta/scanner/token.dart' as fasta; 8 import 'package:front_end/src/fasta/scanner/token.dart' as fasta;
9 import 'package:front_end/src/fasta/scanner/token_constants.dart' as fasta; 9 import 'package:front_end/src/fasta/scanner/token_constants.dart' as fasta;
10 import 'package:front_end/src/scanner/errors.dart'; 10 import 'package:front_end/src/scanner/errors.dart';
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 return token; 337 return token;
338 } 338 }
339 } 339 }
340 340
341 /// Base class for scanner tests that examine the token stream in Fasta format. 341 /// Base class for scanner tests that examine the token stream in Fasta format.
342 abstract class ScannerTest_Fasta_Base { 342 abstract class ScannerTest_Fasta_Base {
343 Token scan(String source); 343 Token scan(String source);
344 344
345 void test_match_angle_brackets() { 345 void test_match_angle_brackets() {
346 var x = scan('x<y>'); 346 var x = scan('x<y>');
347 var lessThan = x.next as fasta.BeginGroupToken; 347 var lessThan = x.next as BeginToken;
348 var y = lessThan.next; 348 var y = lessThan.next;
349 var greaterThan = y.next; 349 var greaterThan = y.next;
350 expect(greaterThan.next.isEof, isTrue); 350 expect(greaterThan.next.isEof, isTrue);
351 expect(lessThan.endGroup, same(greaterThan)); 351 expect(lessThan.endGroup, same(greaterThan));
352 } 352 }
353 353
354 void test_match_angle_brackets_gt_gt() { 354 void test_match_angle_brackets_gt_gt() {
355 // When a ">>" appears in the token stream, Fasta's scanner matches it to 355 // When a ">>" appears in the token stream, Fasta's scanner matches it to
356 // the outer "<". The inner "<" is left unmatched. 356 // the outer "<". The inner "<" is left unmatched.
357 var x = scan('x<y<z>>'); 357 var x = scan('x<y<z>>');
358 var lessThan1 = x.next as fasta.BeginGroupToken; 358 var lessThan1 = x.next as BeginToken;
359 var y = lessThan1.next; 359 var y = lessThan1.next;
360 var lessThan2 = y.next as fasta.BeginGroupToken; 360 var lessThan2 = y.next as BeginToken;
361 var z = lessThan2.next; 361 var z = lessThan2.next;
362 var greaterThans = z.next; 362 var greaterThans = z.next;
363 expect(greaterThans.next.isEof, isTrue); 363 expect(greaterThans.next.isEof, isTrue);
364 expect(lessThan1.endGroup, same(greaterThans)); 364 expect(lessThan1.endGroup, same(greaterThans));
365 expect(lessThan2.endGroup, isNull); 365 expect(lessThan2.endGroup, isNull);
366 } 366 }
367 367
368 void test_match_angle_brackets_interrupted_by_close_brace() { 368 void test_match_angle_brackets_interrupted_by_close_brace() {
369 // A "}" appearing in the token stream interrupts matching of "<" and ">". 369 // A "}" appearing in the token stream interrupts matching of "<" and ">".
370 var openBrace = scan('{x<y}>z') as fasta.BeginGroupToken; 370 var openBrace = scan('{x<y}>z') as BeginToken;
371 var x = openBrace.next; 371 var x = openBrace.next;
372 var lessThan = x.next as fasta.BeginGroupToken; 372 var lessThan = x.next as BeginToken;
373 var y = lessThan.next; 373 var y = lessThan.next;
374 var closeBrace = y.next; 374 var closeBrace = y.next;
375 var greaterThan = closeBrace.next; 375 var greaterThan = closeBrace.next;
376 var z = greaterThan.next; 376 var z = greaterThan.next;
377 expect(z.next.isEof, isTrue); 377 expect(z.next.isEof, isTrue);
378 expect(openBrace.endGroup, same(closeBrace)); 378 expect(openBrace.endGroup, same(closeBrace));
379 expect(lessThan.endGroup, isNull); 379 expect(lessThan.endGroup, isNull);
380 } 380 }
381 381
382 void test_match_angle_brackets_interrupted_by_close_bracket() { 382 void test_match_angle_brackets_interrupted_by_close_bracket() {
383 // A "]" appearing in the token stream interrupts matching of "<" and ">". 383 // A "]" appearing in the token stream interrupts matching of "<" and ">".
384 var openBracket = scan('[x<y]>z') as fasta.BeginGroupToken; 384 var openBracket = scan('[x<y]>z') as BeginToken;
385 var x = openBracket.next; 385 var x = openBracket.next;
386 var lessThan = x.next as fasta.BeginGroupToken; 386 var lessThan = x.next as BeginToken;
387 var y = lessThan.next; 387 var y = lessThan.next;
388 var closeBracket = y.next; 388 var closeBracket = y.next;
389 var greaterThan = closeBracket.next; 389 var greaterThan = closeBracket.next;
390 var z = greaterThan.next; 390 var z = greaterThan.next;
391 expect(z.next.isEof, isTrue); 391 expect(z.next.isEof, isTrue);
392 expect(openBracket.endGroup, same(closeBracket)); 392 expect(openBracket.endGroup, same(closeBracket));
393 expect(lessThan.endGroup, isNull); 393 expect(lessThan.endGroup, isNull);
394 } 394 }
395 395
396 void test_match_angle_brackets_interrupted_by_close_paren() { 396 void test_match_angle_brackets_interrupted_by_close_paren() {
397 // A ")" appearing in the token stream interrupts matching of "<" and ">". 397 // A ")" appearing in the token stream interrupts matching of "<" and ">".
398 var openParen = scan('(x<y)>z') as fasta.BeginGroupToken; 398 var openParen = scan('(x<y)>z') as BeginToken;
399 var x = openParen.next; 399 var x = openParen.next;
400 var lessThan = x.next as fasta.BeginGroupToken; 400 var lessThan = x.next as BeginToken;
401 var y = lessThan.next; 401 var y = lessThan.next;
402 var closeParen = y.next; 402 var closeParen = y.next;
403 var greaterThan = closeParen.next; 403 var greaterThan = closeParen.next;
404 var z = greaterThan.next; 404 var z = greaterThan.next;
405 expect(z.next.isEof, isTrue); 405 expect(z.next.isEof, isTrue);
406 expect(openParen.endGroup, same(closeParen)); 406 expect(openParen.endGroup, same(closeParen));
407 expect(lessThan.endGroup, isNull); 407 expect(lessThan.endGroup, isNull);
408 } 408 }
409 409
410 void test_match_angle_brackets_interrupted_by_interpolation_expr() { 410 void test_match_angle_brackets_interrupted_by_interpolation_expr() {
411 // A "${" appearing in the token stream interrupts matching of "<" and ">". 411 // A "${" appearing in the token stream interrupts matching of "<" and ">".
412 var x = scan(r'x<"${y>z}"'); 412 var x = scan(r'x<"${y>z}"');
413 var lessThan = x.next as fasta.BeginGroupToken; 413 var lessThan = x.next as BeginToken;
414 var beginString = lessThan.next; 414 var beginString = lessThan.next;
415 var beginInterpolation = beginString.next as fasta.BeginGroupToken; 415 var beginInterpolation = beginString.next as BeginToken;
416 var y = beginInterpolation.next; 416 var y = beginInterpolation.next;
417 var greaterThan = y.next; 417 var greaterThan = y.next;
418 var z = greaterThan.next; 418 var z = greaterThan.next;
419 var endInterpolation = z.next; 419 var endInterpolation = z.next;
420 var endString = endInterpolation.next; 420 var endString = endInterpolation.next;
421 expect(endString.next.isEof, isTrue); 421 expect(endString.next.isEof, isTrue);
422 expect(lessThan.endGroup, isNull); 422 expect(lessThan.endGroup, isNull);
423 expect(beginInterpolation.endGroup, same(endInterpolation)); 423 expect(beginInterpolation.endGroup, same(endInterpolation));
424 } 424 }
425 425
426 void test_match_angle_brackets_interrupted_by_open_brace() { 426 void test_match_angle_brackets_interrupted_by_open_brace() {
427 // A "{" appearing in the token stream interrupts matching of "<" and ">". 427 // A "{" appearing in the token stream interrupts matching of "<" and ">".
428 var x = scan('x<{y>z}'); 428 var x = scan('x<{y>z}');
429 var lessThan = x.next as fasta.BeginGroupToken; 429 var lessThan = x.next as BeginToken;
430 var openBrace = lessThan.next as fasta.BeginGroupToken; 430 var openBrace = lessThan.next as BeginToken;
431 var y = openBrace.next; 431 var y = openBrace.next;
432 var greaterThan = y.next; 432 var greaterThan = y.next;
433 var z = greaterThan.next; 433 var z = greaterThan.next;
434 var closeBrace = z.next; 434 var closeBrace = z.next;
435 expect(closeBrace.next.isEof, isTrue); 435 expect(closeBrace.next.isEof, isTrue);
436 expect(lessThan.endGroup, isNull); 436 expect(lessThan.endGroup, isNull);
437 expect(openBrace.endGroup, same(closeBrace)); 437 expect(openBrace.endGroup, same(closeBrace));
438 } 438 }
439 439
440 void test_match_angle_brackets_interrupted_by_open_bracket() { 440 void test_match_angle_brackets_interrupted_by_open_bracket() {
441 // A "[" appearing in the token stream interrupts matching of "<" and ">". 441 // A "[" appearing in the token stream interrupts matching of "<" and ">".
442 var x = scan('x<y[z>a]'); 442 var x = scan('x<y[z>a]');
443 var lessThan = x.next as fasta.BeginGroupToken; 443 var lessThan = x.next as BeginToken;
444 var y = lessThan.next; 444 var y = lessThan.next;
445 var openBracket = y.next as fasta.BeginGroupToken; 445 var openBracket = y.next as BeginToken;
446 var z = openBracket.next; 446 var z = openBracket.next;
447 var greaterThan = z.next; 447 var greaterThan = z.next;
448 var a = greaterThan.next; 448 var a = greaterThan.next;
449 var closeBracket = a.next; 449 var closeBracket = a.next;
450 expect(closeBracket.next.isEof, isTrue); 450 expect(closeBracket.next.isEof, isTrue);
451 expect(lessThan.endGroup, isNull); 451 expect(lessThan.endGroup, isNull);
452 expect(openBracket.endGroup, same(closeBracket)); 452 expect(openBracket.endGroup, same(closeBracket));
453 } 453 }
454 454
455 void test_match_angle_brackets_interrupted_by_open_paren() { 455 void test_match_angle_brackets_interrupted_by_open_paren() {
456 // A "(" appearing in the token stream interrupts matching of "<" and ">". 456 // A "(" appearing in the token stream interrupts matching of "<" and ">".
457 var x = scan('x<y(z>a)'); 457 var x = scan('x<y(z>a)');
458 var lessThan = x.next as fasta.BeginGroupToken; 458 var lessThan = x.next as BeginToken;
459 var y = lessThan.next; 459 var y = lessThan.next;
460 var openParen = y.next as fasta.BeginGroupToken; 460 var openParen = y.next as BeginToken;
461 var z = openParen.next; 461 var z = openParen.next;
462 var greaterThan = z.next; 462 var greaterThan = z.next;
463 var a = greaterThan.next; 463 var a = greaterThan.next;
464 var closeParen = a.next; 464 var closeParen = a.next;
465 expect(closeParen.next.isEof, isTrue); 465 expect(closeParen.next.isEof, isTrue);
466 expect(lessThan.endGroup, isNull); 466 expect(lessThan.endGroup, isNull);
467 expect(openParen.endGroup, same(closeParen)); 467 expect(openParen.endGroup, same(closeParen));
468 } 468 }
469 469
470 void test_match_angle_brackets_nested() { 470 void test_match_angle_brackets_nested() {
471 var x = scan('x<y<z>,a>'); 471 var x = scan('x<y<z>,a>');
472 var lessThan1 = x.next as fasta.BeginGroupToken; 472 var lessThan1 = x.next as BeginToken;
473 var y = lessThan1.next; 473 var y = lessThan1.next;
474 var lessThan2 = y.next as fasta.BeginGroupToken; 474 var lessThan2 = y.next as BeginToken;
475 var z = lessThan2.next; 475 var z = lessThan2.next;
476 var greaterThan1 = z.next; 476 var greaterThan1 = z.next;
477 var comma = greaterThan1.next; 477 var comma = greaterThan1.next;
478 var a = comma.next; 478 var a = comma.next;
479 var greaterThan2 = a.next; 479 var greaterThan2 = a.next;
480 expect(greaterThan2.next.isEof, isTrue); 480 expect(greaterThan2.next.isEof, isTrue);
481 expect(lessThan1.endGroup, same(greaterThan2)); 481 expect(lessThan1.endGroup, same(greaterThan2));
482 expect(lessThan2.endGroup, same(greaterThan1)); 482 expect(lessThan2.endGroup, same(greaterThan1));
483 } 483 }
484 484
485 void test_match_angle_brackets_unmatched_gt_gt() { 485 void test_match_angle_brackets_unmatched_gt_gt() {
486 // When a ">>" appears in the token stream and there is no outer "<", 486 // When a ">>" appears in the token stream and there is no outer "<",
487 // Fasta's scanner leaves the inner "<" unmatched. 487 // Fasta's scanner leaves the inner "<" unmatched.
488 var x = scan('x<y>>z'); 488 var x = scan('x<y>>z');
489 var lessThan = x.next as fasta.BeginGroupToken; 489 var lessThan = x.next as BeginToken;
490 var y = lessThan.next; 490 var y = lessThan.next;
491 var greaterThans = y.next; 491 var greaterThans = y.next;
492 var z = greaterThans.next; 492 var z = greaterThans.next;
493 expect(z.next.isEof, isTrue); 493 expect(z.next.isEof, isTrue);
494 expect(lessThan.endGroup, isNull); 494 expect(lessThan.endGroup, isNull);
495 } 495 }
496 } 496 }
497 497
498 /// Scanner tests that exercise the Fasta scanner directly. 498 /// Scanner tests that exercise the Fasta scanner directly.
499 @reflectiveTest 499 @reflectiveTest
(...skipping 23 matching lines...) Expand all
523 final ErrorListener _listener; 523 final ErrorListener _listener;
524 524
525 ToAnalyzerTokenStreamConverter_WithListener(this._listener); 525 ToAnalyzerTokenStreamConverter_WithListener(this._listener);
526 526
527 @override 527 @override
528 void reportError( 528 void reportError(
529 ScannerErrorCode errorCode, int offset, List<Object> arguments) { 529 ScannerErrorCode errorCode, int offset, List<Object> arguments) {
530 _listener.errors.add(new TestError(offset, errorCode, arguments)); 530 _listener.errors.add(new TestError(offset, errorCode, arguments));
531 } 531 }
532 } 532 }
OLDNEW
« no previous file with comments | « pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart ('k') | pkg/front_end/test/scanner_replacement_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698