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

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

Issue 2524903002: Rename AstFactory -> AstTestFactory. (Closed)
Patch Set: Created 4 years 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 library analyzer.test.generated.static_type_analyzer_test; 5 library analyzer.test.generated.static_type_analyzer_test;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/token.dart'; 10 import 'package:analyzer/dart/ast/token.dart';
11 import 'package:analyzer/dart/element/element.dart'; 11 import 'package:analyzer/dart/element/element.dart';
12 import 'package:analyzer/dart/element/type.dart'; 12 import 'package:analyzer/dart/element/type.dart';
13 import 'package:analyzer/file_system/memory_file_system.dart'; 13 import 'package:analyzer/file_system/memory_file_system.dart';
14 import 'package:analyzer/src/dart/element/element.dart'; 14 import 'package:analyzer/src/dart/element/element.dart';
15 import 'package:analyzer/src/dart/element/member.dart'; 15 import 'package:analyzer/src/dart/element/member.dart';
16 import 'package:analyzer/src/dart/element/type.dart'; 16 import 'package:analyzer/src/dart/element/type.dart';
17 import 'package:analyzer/src/generated/engine.dart'; 17 import 'package:analyzer/src/generated/engine.dart';
18 import 'package:analyzer/src/generated/resolver.dart'; 18 import 'package:analyzer/src/generated/resolver.dart';
19 import 'package:analyzer/src/generated/source.dart'; 19 import 'package:analyzer/src/generated/source.dart';
20 import 'package:analyzer/src/generated/static_type_analyzer.dart'; 20 import 'package:analyzer/src/generated/static_type_analyzer.dart';
21 import 'package:analyzer/src/generated/testing/ast_factory.dart'; 21 import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
22 import 'package:analyzer/src/generated/testing/element_factory.dart'; 22 import 'package:analyzer/src/generated/testing/element_factory.dart';
23 import 'package:analyzer/src/generated/testing/test_type_provider.dart'; 23 import 'package:analyzer/src/generated/testing/test_type_provider.dart';
24 import 'package:analyzer/src/generated/testing/token_factory.dart'; 24 import 'package:analyzer/src/generated/testing/token_factory.dart';
25 import 'package:analyzer/src/source/source_resource.dart'; 25 import 'package:analyzer/src/source/source_resource.dart';
26 import 'package:test/test.dart'; 26 import 'package:test/test.dart';
27 import 'package:test_reflective_loader/test_reflective_loader.dart'; 27 import 'package:test_reflective_loader/test_reflective_loader.dart';
28 28
29 import 'analysis_context_factory.dart'; 29 import 'analysis_context_factory.dart';
30 import 'resolver_test_case.dart'; 30 import 'resolver_test_case.dart';
31 import 'test_support.dart'; 31 import 'test_support.dart';
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 futureType.instantiate([intType]) 347 futureType.instantiate([intType])
348 ]; 348 ];
349 // flatten(A) = A and flatten(B) = B, since neither string nor int is more 349 // flatten(A) = A and flatten(B) = B, since neither string nor int is more
350 // specific than the other. 350 // specific than the other.
351 expect(_flatten(classA.type), classA.type); 351 expect(_flatten(classA.type), classA.type);
352 expect(_flatten(classB.type), classB.type); 352 expect(_flatten(classB.type), classB.type);
353 } 353 }
354 354
355 void test_visitAdjacentStrings() { 355 void test_visitAdjacentStrings() {
356 // "a" "b" 356 // "a" "b"
357 Expression node = AstFactory 357 Expression node = AstTestFactory
358 .adjacentStrings([_resolvedString("a"), _resolvedString("b")]); 358 .adjacentStrings([_resolvedString("a"), _resolvedString("b")]);
359 expect(_analyze(node), same(_typeProvider.stringType)); 359 expect(_analyze(node), same(_typeProvider.stringType));
360 _listener.assertNoErrors(); 360 _listener.assertNoErrors();
361 } 361 }
362 362
363 void test_visitAsExpression() { 363 void test_visitAsExpression() {
364 // class A { ... this as B ... } 364 // class A { ... this as B ... }
365 // class B extends A {} 365 // class B extends A {}
366 ClassElement superclass = ElementFactory.classElement2("A"); 366 ClassElement superclass = ElementFactory.classElement2("A");
367 InterfaceType superclassType = superclass.type; 367 InterfaceType superclassType = superclass.type;
368 ClassElement subclass = ElementFactory.classElement("B", superclassType); 368 ClassElement subclass = ElementFactory.classElement("B", superclassType);
369 Expression node = AstFactory.asExpression( 369 Expression node = AstTestFactory.asExpression(
370 AstFactory.thisExpression(), AstFactory.typeName(subclass)); 370 AstTestFactory.thisExpression(), AstTestFactory.typeName(subclass));
371 expect(_analyze3(node, superclassType), same(subclass.type)); 371 expect(_analyze3(node, superclassType), same(subclass.type));
372 _listener.assertNoErrors(); 372 _listener.assertNoErrors();
373 } 373 }
374 374
375 void test_visitAssignmentExpression_compound_II() { 375 void test_visitAssignmentExpression_compound_II() {
376 validate(TokenType operator) { 376 validate(TokenType operator) {
377 InterfaceType numType = _typeProvider.numType; 377 InterfaceType numType = _typeProvider.numType;
378 InterfaceType intType = _typeProvider.intType; 378 InterfaceType intType = _typeProvider.intType;
379 SimpleIdentifier identifier = _resolvedVariable(intType, "i"); 379 SimpleIdentifier identifier = _resolvedVariable(intType, "i");
380 AssignmentExpression node = AstFactory.assignmentExpression( 380 AssignmentExpression node = AstTestFactory.assignmentExpression(
381 identifier, operator, _resolvedInteger(1)); 381 identifier, operator, _resolvedInteger(1));
382 MethodElement plusMethod = getMethod(numType, "+"); 382 MethodElement plusMethod = getMethod(numType, "+");
383 node.staticElement = plusMethod; 383 node.staticElement = plusMethod;
384 expect(_analyze(node), same(intType)); 384 expect(_analyze(node), same(intType));
385 _listener.assertNoErrors(); 385 _listener.assertNoErrors();
386 } 386 }
387 387
388 validate(TokenType.MINUS_EQ); 388 validate(TokenType.MINUS_EQ);
389 validate(TokenType.PERCENT_EQ); 389 validate(TokenType.PERCENT_EQ);
390 validate(TokenType.PLUS_EQ); 390 validate(TokenType.PLUS_EQ);
391 validate(TokenType.STAR_EQ); 391 validate(TokenType.STAR_EQ);
392 validate(TokenType.TILDE_SLASH_EQ); 392 validate(TokenType.TILDE_SLASH_EQ);
393 } 393 }
394 394
395 void test_visitAssignmentExpression_compound_lazy() { 395 void test_visitAssignmentExpression_compound_lazy() {
396 validate(TokenType operator) { 396 validate(TokenType operator) {
397 InterfaceType boolType = _typeProvider.boolType; 397 InterfaceType boolType = _typeProvider.boolType;
398 SimpleIdentifier identifier = _resolvedVariable(boolType, "b"); 398 SimpleIdentifier identifier = _resolvedVariable(boolType, "b");
399 AssignmentExpression node = AstFactory.assignmentExpression( 399 AssignmentExpression node = AstTestFactory.assignmentExpression(
400 identifier, operator, _resolvedBool(true)); 400 identifier, operator, _resolvedBool(true));
401 expect(_analyze(node), same(boolType)); 401 expect(_analyze(node), same(boolType));
402 _listener.assertNoErrors(); 402 _listener.assertNoErrors();
403 } 403 }
404 404
405 validate(TokenType.AMPERSAND_AMPERSAND_EQ); 405 validate(TokenType.AMPERSAND_AMPERSAND_EQ);
406 validate(TokenType.BAR_BAR_EQ); 406 validate(TokenType.BAR_BAR_EQ);
407 } 407 }
408 408
409 void test_visitAssignmentExpression_compound_plusID() { 409 void test_visitAssignmentExpression_compound_plusID() {
410 validate(TokenType operator) { 410 validate(TokenType operator) {
411 InterfaceType numType = _typeProvider.numType; 411 InterfaceType numType = _typeProvider.numType;
412 InterfaceType intType = _typeProvider.intType; 412 InterfaceType intType = _typeProvider.intType;
413 InterfaceType doubleType = _typeProvider.doubleType; 413 InterfaceType doubleType = _typeProvider.doubleType;
414 SimpleIdentifier identifier = _resolvedVariable(intType, "i"); 414 SimpleIdentifier identifier = _resolvedVariable(intType, "i");
415 AssignmentExpression node = AstFactory.assignmentExpression( 415 AssignmentExpression node = AstTestFactory.assignmentExpression(
416 identifier, operator, _resolvedDouble(1.0)); 416 identifier, operator, _resolvedDouble(1.0));
417 MethodElement plusMethod = getMethod(numType, "+"); 417 MethodElement plusMethod = getMethod(numType, "+");
418 node.staticElement = plusMethod; 418 node.staticElement = plusMethod;
419 expect(_analyze(node), same(doubleType)); 419 expect(_analyze(node), same(doubleType));
420 _listener.assertNoErrors(); 420 _listener.assertNoErrors();
421 } 421 }
422 422
423 validate(TokenType.MINUS_EQ); 423 validate(TokenType.MINUS_EQ);
424 validate(TokenType.PERCENT_EQ); 424 validate(TokenType.PERCENT_EQ);
425 validate(TokenType.PLUS_EQ); 425 validate(TokenType.PLUS_EQ);
426 validate(TokenType.STAR_EQ); 426 validate(TokenType.STAR_EQ);
427 } 427 }
428 428
429 void test_visitAssignmentExpression_compoundIfNull_differentTypes() { 429 void test_visitAssignmentExpression_compoundIfNull_differentTypes() {
430 // double d; d ??= 0 430 // double d; d ??= 0
431 Expression node = AstFactory.assignmentExpression( 431 Expression node = AstTestFactory.assignmentExpression(
432 _resolvedVariable(_typeProvider.doubleType, 'd'), 432 _resolvedVariable(_typeProvider.doubleType, 'd'),
433 TokenType.QUESTION_QUESTION_EQ, 433 TokenType.QUESTION_QUESTION_EQ,
434 _resolvedInteger(0)); 434 _resolvedInteger(0));
435 expect(_analyze(node), same(_typeProvider.numType)); 435 expect(_analyze(node), same(_typeProvider.numType));
436 _listener.assertNoErrors(); 436 _listener.assertNoErrors();
437 } 437 }
438 438
439 void test_visitAssignmentExpression_compoundIfNull_sameTypes() { 439 void test_visitAssignmentExpression_compoundIfNull_sameTypes() {
440 // int i; i ??= 0 440 // int i; i ??= 0
441 Expression node = AstFactory.assignmentExpression( 441 Expression node = AstTestFactory.assignmentExpression(
442 _resolvedVariable(_typeProvider.intType, 'i'), 442 _resolvedVariable(_typeProvider.intType, 'i'),
443 TokenType.QUESTION_QUESTION_EQ, 443 TokenType.QUESTION_QUESTION_EQ,
444 _resolvedInteger(0)); 444 _resolvedInteger(0));
445 expect(_analyze(node), same(_typeProvider.intType)); 445 expect(_analyze(node), same(_typeProvider.intType));
446 _listener.assertNoErrors(); 446 _listener.assertNoErrors();
447 } 447 }
448 448
449 void test_visitAssignmentExpression_simple() { 449 void test_visitAssignmentExpression_simple() {
450 // i = 0 450 // i = 0
451 InterfaceType intType = _typeProvider.intType; 451 InterfaceType intType = _typeProvider.intType;
452 Expression node = AstFactory.assignmentExpression( 452 Expression node = AstTestFactory.assignmentExpression(
453 _resolvedVariable(intType, "i"), TokenType.EQ, _resolvedInteger(0)); 453 _resolvedVariable(intType, "i"), TokenType.EQ, _resolvedInteger(0));
454 expect(_analyze(node), same(intType)); 454 expect(_analyze(node), same(intType));
455 _listener.assertNoErrors(); 455 _listener.assertNoErrors();
456 } 456 }
457 457
458 void test_visitAwaitExpression_flattened() { 458 void test_visitAwaitExpression_flattened() {
459 // await e, where e has type Future<Future<int>> 459 // await e, where e has type Future<Future<int>>
460 InterfaceType intType = _typeProvider.intType; 460 InterfaceType intType = _typeProvider.intType;
461 InterfaceType futureIntType = 461 InterfaceType futureIntType =
462 _typeProvider.futureType.instantiate(<DartType>[intType]); 462 _typeProvider.futureType.instantiate(<DartType>[intType]);
463 InterfaceType futureFutureIntType = 463 InterfaceType futureFutureIntType =
464 _typeProvider.futureType.instantiate(<DartType>[futureIntType]); 464 _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
465 Expression node = 465 Expression node = AstTestFactory
466 AstFactory.awaitExpression(_resolvedVariable(futureFutureIntType, 'e')); 466 .awaitExpression(_resolvedVariable(futureFutureIntType, 'e'));
467 expect(_analyze(node), same(intType)); 467 expect(_analyze(node), same(intType));
468 _listener.assertNoErrors(); 468 _listener.assertNoErrors();
469 } 469 }
470 470
471 void test_visitAwaitExpression_simple() { 471 void test_visitAwaitExpression_simple() {
472 // await e, where e has type Future<int> 472 // await e, where e has type Future<int>
473 InterfaceType intType = _typeProvider.intType; 473 InterfaceType intType = _typeProvider.intType;
474 InterfaceType futureIntType = 474 InterfaceType futureIntType =
475 _typeProvider.futureType.instantiate(<DartType>[intType]); 475 _typeProvider.futureType.instantiate(<DartType>[intType]);
476 Expression node = 476 Expression node =
477 AstFactory.awaitExpression(_resolvedVariable(futureIntType, 'e')); 477 AstTestFactory.awaitExpression(_resolvedVariable(futureIntType, 'e'));
478 expect(_analyze(node), same(intType)); 478 expect(_analyze(node), same(intType));
479 _listener.assertNoErrors(); 479 _listener.assertNoErrors();
480 } 480 }
481 481
482 void test_visitBinaryExpression_equals() { 482 void test_visitBinaryExpression_equals() {
483 // 2 == 3 483 // 2 == 3
484 Expression node = AstFactory.binaryExpression( 484 Expression node = AstTestFactory.binaryExpression(
485 _resolvedInteger(2), TokenType.EQ_EQ, _resolvedInteger(3)); 485 _resolvedInteger(2), TokenType.EQ_EQ, _resolvedInteger(3));
486 expect(_analyze(node), same(_typeProvider.boolType)); 486 expect(_analyze(node), same(_typeProvider.boolType));
487 _listener.assertNoErrors(); 487 _listener.assertNoErrors();
488 } 488 }
489 489
490 void test_visitBinaryExpression_ifNull() { 490 void test_visitBinaryExpression_ifNull() {
491 // 1 ?? 1.5 491 // 1 ?? 1.5
492 Expression node = AstFactory.binaryExpression( 492 Expression node = AstTestFactory.binaryExpression(
493 _resolvedInteger(1), TokenType.QUESTION_QUESTION, _resolvedDouble(1.5)); 493 _resolvedInteger(1), TokenType.QUESTION_QUESTION, _resolvedDouble(1.5));
494 expect(_analyze(node), same(_typeProvider.numType)); 494 expect(_analyze(node), same(_typeProvider.numType));
495 _listener.assertNoErrors(); 495 _listener.assertNoErrors();
496 } 496 }
497 497
498 void test_visitBinaryExpression_logicalAnd() { 498 void test_visitBinaryExpression_logicalAnd() {
499 // false && true 499 // false && true
500 Expression node = AstFactory.binaryExpression( 500 Expression node = AstTestFactory.binaryExpression(
501 AstFactory.booleanLiteral(false), 501 AstTestFactory.booleanLiteral(false),
502 TokenType.AMPERSAND_AMPERSAND, 502 TokenType.AMPERSAND_AMPERSAND,
503 AstFactory.booleanLiteral(true)); 503 AstTestFactory.booleanLiteral(true));
504 expect(_analyze(node), same(_typeProvider.boolType)); 504 expect(_analyze(node), same(_typeProvider.boolType));
505 _listener.assertNoErrors(); 505 _listener.assertNoErrors();
506 } 506 }
507 507
508 void test_visitBinaryExpression_logicalOr() { 508 void test_visitBinaryExpression_logicalOr() {
509 // false || true 509 // false || true
510 Expression node = AstFactory.binaryExpression( 510 Expression node = AstTestFactory.binaryExpression(
511 AstFactory.booleanLiteral(false), 511 AstTestFactory.booleanLiteral(false),
512 TokenType.BAR_BAR, 512 TokenType.BAR_BAR,
513 AstFactory.booleanLiteral(true)); 513 AstTestFactory.booleanLiteral(true));
514 expect(_analyze(node), same(_typeProvider.boolType)); 514 expect(_analyze(node), same(_typeProvider.boolType));
515 _listener.assertNoErrors(); 515 _listener.assertNoErrors();
516 } 516 }
517 517
518 void test_visitBinaryExpression_minusID_propagated() { 518 void test_visitBinaryExpression_minusID_propagated() {
519 // a - b 519 // a - b
520 BinaryExpression node = AstFactory.binaryExpression( 520 BinaryExpression node = AstTestFactory.binaryExpression(
521 _propagatedVariable(_typeProvider.intType, 'a'), 521 _propagatedVariable(_typeProvider.intType, 'a'),
522 TokenType.MINUS, 522 TokenType.MINUS,
523 _propagatedVariable(_typeProvider.doubleType, 'b')); 523 _propagatedVariable(_typeProvider.doubleType, 'b'));
524 node.propagatedElement = getMethod(_typeProvider.numType, "+"); 524 node.propagatedElement = getMethod(_typeProvider.numType, "+");
525 _analyze(node); 525 _analyze(node);
526 expect(node.propagatedType, same(_typeProvider.doubleType)); 526 expect(node.propagatedType, same(_typeProvider.doubleType));
527 _listener.assertNoErrors(); 527 _listener.assertNoErrors();
528 } 528 }
529 529
530 void test_visitBinaryExpression_notEquals() { 530 void test_visitBinaryExpression_notEquals() {
531 // 2 != 3 531 // 2 != 3
532 Expression node = AstFactory.binaryExpression( 532 Expression node = AstTestFactory.binaryExpression(
533 _resolvedInteger(2), TokenType.BANG_EQ, _resolvedInteger(3)); 533 _resolvedInteger(2), TokenType.BANG_EQ, _resolvedInteger(3));
534 expect(_analyze(node), same(_typeProvider.boolType)); 534 expect(_analyze(node), same(_typeProvider.boolType));
535 _listener.assertNoErrors(); 535 _listener.assertNoErrors();
536 } 536 }
537 537
538 void test_visitBinaryExpression_plusID() { 538 void test_visitBinaryExpression_plusID() {
539 // 1 + 2.0 539 // 1 + 2.0
540 BinaryExpression node = AstFactory.binaryExpression( 540 BinaryExpression node = AstTestFactory.binaryExpression(
541 _resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0)); 541 _resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0));
542 node.staticElement = getMethod(_typeProvider.numType, "+"); 542 node.staticElement = getMethod(_typeProvider.numType, "+");
543 expect(_analyze(node), same(_typeProvider.doubleType)); 543 expect(_analyze(node), same(_typeProvider.doubleType));
544 _listener.assertNoErrors(); 544 _listener.assertNoErrors();
545 } 545 }
546 546
547 void test_visitBinaryExpression_plusII() { 547 void test_visitBinaryExpression_plusII() {
548 // 1 + 2 548 // 1 + 2
549 BinaryExpression node = AstFactory.binaryExpression( 549 BinaryExpression node = AstTestFactory.binaryExpression(
550 _resolvedInteger(1), TokenType.PLUS, _resolvedInteger(2)); 550 _resolvedInteger(1), TokenType.PLUS, _resolvedInteger(2));
551 node.staticElement = getMethod(_typeProvider.numType, "+"); 551 node.staticElement = getMethod(_typeProvider.numType, "+");
552 expect(_analyze(node), same(_typeProvider.intType)); 552 expect(_analyze(node), same(_typeProvider.intType));
553 _listener.assertNoErrors(); 553 _listener.assertNoErrors();
554 } 554 }
555 555
556 void test_visitBinaryExpression_plusII_propagated() { 556 void test_visitBinaryExpression_plusII_propagated() {
557 // a + b 557 // a + b
558 BinaryExpression node = AstFactory.binaryExpression( 558 BinaryExpression node = AstTestFactory.binaryExpression(
559 _propagatedVariable(_typeProvider.intType, 'a'), 559 _propagatedVariable(_typeProvider.intType, 'a'),
560 TokenType.PLUS, 560 TokenType.PLUS,
561 _propagatedVariable(_typeProvider.intType, 'b')); 561 _propagatedVariable(_typeProvider.intType, 'b'));
562 node.propagatedElement = getMethod(_typeProvider.numType, "+"); 562 node.propagatedElement = getMethod(_typeProvider.numType, "+");
563 _analyze(node); 563 _analyze(node);
564 expect(node.propagatedType, same(_typeProvider.intType)); 564 expect(node.propagatedType, same(_typeProvider.intType));
565 _listener.assertNoErrors(); 565 _listener.assertNoErrors();
566 } 566 }
567 567
568 void test_visitBinaryExpression_slash() { 568 void test_visitBinaryExpression_slash() {
569 // 2 / 2 569 // 2 / 2
570 BinaryExpression node = AstFactory.binaryExpression( 570 BinaryExpression node = AstTestFactory.binaryExpression(
571 _resolvedInteger(2), TokenType.SLASH, _resolvedInteger(2)); 571 _resolvedInteger(2), TokenType.SLASH, _resolvedInteger(2));
572 node.staticElement = getMethod(_typeProvider.numType, "/"); 572 node.staticElement = getMethod(_typeProvider.numType, "/");
573 expect(_analyze(node), same(_typeProvider.doubleType)); 573 expect(_analyze(node), same(_typeProvider.doubleType));
574 _listener.assertNoErrors(); 574 _listener.assertNoErrors();
575 } 575 }
576 576
577 void test_visitBinaryExpression_star_notSpecial() { 577 void test_visitBinaryExpression_star_notSpecial() {
578 // class A { 578 // class A {
579 // A operator *(double value); 579 // A operator *(double value);
580 // } 580 // }
581 // (a as A) * 2.0 581 // (a as A) * 2.0
582 ClassElementImpl classA = ElementFactory.classElement2("A"); 582 ClassElementImpl classA = ElementFactory.classElement2("A");
583 InterfaceType typeA = classA.type; 583 InterfaceType typeA = classA.type;
584 MethodElement operator = 584 MethodElement operator =
585 ElementFactory.methodElement("*", typeA, [_typeProvider.doubleType]); 585 ElementFactory.methodElement("*", typeA, [_typeProvider.doubleType]);
586 classA.methods = <MethodElement>[operator]; 586 classA.methods = <MethodElement>[operator];
587 BinaryExpression node = AstFactory.binaryExpression( 587 BinaryExpression node = AstTestFactory.binaryExpression(
588 AstFactory.asExpression( 588 AstTestFactory.asExpression(
589 AstFactory.identifier3("a"), AstFactory.typeName(classA)), 589 AstTestFactory.identifier3("a"), AstTestFactory.typeName(classA)),
590 TokenType.PLUS, 590 TokenType.PLUS,
591 _resolvedDouble(2.0)); 591 _resolvedDouble(2.0));
592 node.staticElement = operator; 592 node.staticElement = operator;
593 expect(_analyze(node), same(typeA)); 593 expect(_analyze(node), same(typeA));
594 _listener.assertNoErrors(); 594 _listener.assertNoErrors();
595 } 595 }
596 596
597 void test_visitBinaryExpression_starID() { 597 void test_visitBinaryExpression_starID() {
598 // 1 * 2.0 598 // 1 * 2.0
599 BinaryExpression node = AstFactory.binaryExpression( 599 BinaryExpression node = AstTestFactory.binaryExpression(
600 _resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0)); 600 _resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0));
601 node.staticElement = getMethod(_typeProvider.numType, "*"); 601 node.staticElement = getMethod(_typeProvider.numType, "*");
602 expect(_analyze(node), same(_typeProvider.doubleType)); 602 expect(_analyze(node), same(_typeProvider.doubleType));
603 _listener.assertNoErrors(); 603 _listener.assertNoErrors();
604 } 604 }
605 605
606 void test_visitBooleanLiteral_false() { 606 void test_visitBooleanLiteral_false() {
607 // false 607 // false
608 Expression node = AstFactory.booleanLiteral(false); 608 Expression node = AstTestFactory.booleanLiteral(false);
609 expect(_analyze(node), same(_typeProvider.boolType)); 609 expect(_analyze(node), same(_typeProvider.boolType));
610 _listener.assertNoErrors(); 610 _listener.assertNoErrors();
611 } 611 }
612 612
613 void test_visitBooleanLiteral_true() { 613 void test_visitBooleanLiteral_true() {
614 // true 614 // true
615 Expression node = AstFactory.booleanLiteral(true); 615 Expression node = AstTestFactory.booleanLiteral(true);
616 expect(_analyze(node), same(_typeProvider.boolType)); 616 expect(_analyze(node), same(_typeProvider.boolType));
617 _listener.assertNoErrors(); 617 _listener.assertNoErrors();
618 } 618 }
619 619
620 void test_visitCascadeExpression() { 620 void test_visitCascadeExpression() {
621 // a..length 621 // a..length
622 Expression node = AstFactory.cascadeExpression( 622 Expression node = AstTestFactory.cascadeExpression(
623 _resolvedString("a"), [AstFactory.propertyAccess2(null, "length")]); 623 _resolvedString("a"), [AstTestFactory.propertyAccess2(null, "length")]);
624 expect(_analyze(node), same(_typeProvider.stringType)); 624 expect(_analyze(node), same(_typeProvider.stringType));
625 _listener.assertNoErrors(); 625 _listener.assertNoErrors();
626 } 626 }
627 627
628 void test_visitConditionalExpression_differentTypes() { 628 void test_visitConditionalExpression_differentTypes() {
629 // true ? 1.0 : 0 629 // true ? 1.0 : 0
630 Expression node = AstFactory.conditionalExpression( 630 Expression node = AstTestFactory.conditionalExpression(
631 AstFactory.booleanLiteral(true), 631 AstTestFactory.booleanLiteral(true),
632 _resolvedDouble(1.0), 632 _resolvedDouble(1.0),
633 _resolvedInteger(0)); 633 _resolvedInteger(0));
634 expect(_analyze(node), same(_typeProvider.numType)); 634 expect(_analyze(node), same(_typeProvider.numType));
635 _listener.assertNoErrors(); 635 _listener.assertNoErrors();
636 } 636 }
637 637
638 void test_visitConditionalExpression_sameTypes() { 638 void test_visitConditionalExpression_sameTypes() {
639 // true ? 1 : 0 639 // true ? 1 : 0
640 Expression node = AstFactory.conditionalExpression( 640 Expression node = AstTestFactory.conditionalExpression(
641 AstFactory.booleanLiteral(true), 641 AstTestFactory.booleanLiteral(true),
642 _resolvedInteger(1), 642 _resolvedInteger(1),
643 _resolvedInteger(0)); 643 _resolvedInteger(0));
644 expect(_analyze(node), same(_typeProvider.intType)); 644 expect(_analyze(node), same(_typeProvider.intType));
645 _listener.assertNoErrors(); 645 _listener.assertNoErrors();
646 } 646 }
647 647
648 void test_visitDoubleLiteral() { 648 void test_visitDoubleLiteral() {
649 // 4.33 649 // 4.33
650 Expression node = AstFactory.doubleLiteral(4.33); 650 Expression node = AstTestFactory.doubleLiteral(4.33);
651 expect(_analyze(node), same(_typeProvider.doubleType)); 651 expect(_analyze(node), same(_typeProvider.doubleType));
652 _listener.assertNoErrors(); 652 _listener.assertNoErrors();
653 } 653 }
654 654
655 void test_visitFunctionExpression_async_block() { 655 void test_visitFunctionExpression_async_block() {
656 // () async {} 656 // () async {}
657 BlockFunctionBody body = AstFactory.blockFunctionBody2(); 657 BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
658 body.keyword = TokenFactory.tokenFromString('async'); 658 body.keyword = TokenFactory.tokenFromString('async');
659 FunctionExpression node = 659 FunctionExpression node = _resolvedFunctionExpression(
660 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 660 AstTestFactory.formalParameterList([]), body);
661 DartType resultType = _analyze(node); 661 DartType resultType = _analyze(node);
662 _assertFunctionType( 662 _assertFunctionType(
663 _typeProvider.futureDynamicType, null, null, null, resultType); 663 _typeProvider.futureDynamicType, null, null, null, resultType);
664 _listener.assertNoErrors(); 664 _listener.assertNoErrors();
665 } 665 }
666 666
667 void test_visitFunctionExpression_async_expression() { 667 void test_visitFunctionExpression_async_expression() {
668 // () async => e, where e has type int 668 // () async => e, where e has type int
669 InterfaceType intType = _typeProvider.intType; 669 InterfaceType intType = _typeProvider.intType;
670 InterfaceType futureIntType = 670 InterfaceType futureIntType =
671 _typeProvider.futureType.instantiate(<DartType>[intType]); 671 _typeProvider.futureType.instantiate(<DartType>[intType]);
672 Expression expression = _resolvedVariable(intType, 'e'); 672 Expression expression = _resolvedVariable(intType, 'e');
673 ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression); 673 ExpressionFunctionBody body =
674 AstTestFactory.expressionFunctionBody(expression);
674 body.keyword = TokenFactory.tokenFromString('async'); 675 body.keyword = TokenFactory.tokenFromString('async');
675 FunctionExpression node = 676 FunctionExpression node = _resolvedFunctionExpression(
676 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 677 AstTestFactory.formalParameterList([]), body);
677 DartType resultType = _analyze(node); 678 DartType resultType = _analyze(node);
678 _assertFunctionType(futureIntType, null, null, null, resultType); 679 _assertFunctionType(futureIntType, null, null, null, resultType);
679 _listener.assertNoErrors(); 680 _listener.assertNoErrors();
680 } 681 }
681 682
682 void test_visitFunctionExpression_async_expression_flatten() { 683 void test_visitFunctionExpression_async_expression_flatten() {
683 // () async => e, where e has type Future<int> 684 // () async => e, where e has type Future<int>
684 InterfaceType intType = _typeProvider.intType; 685 InterfaceType intType = _typeProvider.intType;
685 InterfaceType futureIntType = 686 InterfaceType futureIntType =
686 _typeProvider.futureType.instantiate(<DartType>[intType]); 687 _typeProvider.futureType.instantiate(<DartType>[intType]);
687 Expression expression = _resolvedVariable(futureIntType, 'e'); 688 Expression expression = _resolvedVariable(futureIntType, 'e');
688 ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression); 689 ExpressionFunctionBody body =
690 AstTestFactory.expressionFunctionBody(expression);
689 body.keyword = TokenFactory.tokenFromString('async'); 691 body.keyword = TokenFactory.tokenFromString('async');
690 FunctionExpression node = 692 FunctionExpression node = _resolvedFunctionExpression(
691 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 693 AstTestFactory.formalParameterList([]), body);
692 DartType resultType = _analyze(node); 694 DartType resultType = _analyze(node);
693 _assertFunctionType(futureIntType, null, null, null, resultType); 695 _assertFunctionType(futureIntType, null, null, null, resultType);
694 _listener.assertNoErrors(); 696 _listener.assertNoErrors();
695 } 697 }
696 698
697 void test_visitFunctionExpression_async_expression_flatten_twice() { 699 void test_visitFunctionExpression_async_expression_flatten_twice() {
698 // () async => e, where e has type Future<Future<int>> 700 // () async => e, where e has type Future<Future<int>>
699 InterfaceType intType = _typeProvider.intType; 701 InterfaceType intType = _typeProvider.intType;
700 InterfaceType futureIntType = 702 InterfaceType futureIntType =
701 _typeProvider.futureType.instantiate(<DartType>[intType]); 703 _typeProvider.futureType.instantiate(<DartType>[intType]);
702 InterfaceType futureFutureIntType = 704 InterfaceType futureFutureIntType =
703 _typeProvider.futureType.instantiate(<DartType>[futureIntType]); 705 _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
704 Expression expression = _resolvedVariable(futureFutureIntType, 'e'); 706 Expression expression = _resolvedVariable(futureFutureIntType, 'e');
705 ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression); 707 ExpressionFunctionBody body =
708 AstTestFactory.expressionFunctionBody(expression);
706 body.keyword = TokenFactory.tokenFromString('async'); 709 body.keyword = TokenFactory.tokenFromString('async');
707 FunctionExpression node = 710 FunctionExpression node = _resolvedFunctionExpression(
708 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 711 AstTestFactory.formalParameterList([]), body);
709 DartType resultType = _analyze(node); 712 DartType resultType = _analyze(node);
710 _assertFunctionType(futureIntType, null, null, null, resultType); 713 _assertFunctionType(futureIntType, null, null, null, resultType);
711 _listener.assertNoErrors(); 714 _listener.assertNoErrors();
712 } 715 }
713 716
714 void test_visitFunctionExpression_generator_async() { 717 void test_visitFunctionExpression_generator_async() {
715 // () async* {} 718 // () async* {}
716 BlockFunctionBody body = AstFactory.blockFunctionBody2(); 719 BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
717 body.keyword = TokenFactory.tokenFromString('async'); 720 body.keyword = TokenFactory.tokenFromString('async');
718 body.star = TokenFactory.tokenFromType(TokenType.STAR); 721 body.star = TokenFactory.tokenFromType(TokenType.STAR);
719 FunctionExpression node = 722 FunctionExpression node = _resolvedFunctionExpression(
720 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 723 AstTestFactory.formalParameterList([]), body);
721 DartType resultType = _analyze(node); 724 DartType resultType = _analyze(node);
722 _assertFunctionType( 725 _assertFunctionType(
723 _typeProvider.streamDynamicType, null, null, null, resultType); 726 _typeProvider.streamDynamicType, null, null, null, resultType);
724 _listener.assertNoErrors(); 727 _listener.assertNoErrors();
725 } 728 }
726 729
727 void test_visitFunctionExpression_generator_sync() { 730 void test_visitFunctionExpression_generator_sync() {
728 // () sync* {} 731 // () sync* {}
729 BlockFunctionBody body = AstFactory.blockFunctionBody2(); 732 BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
730 body.keyword = TokenFactory.tokenFromString('sync'); 733 body.keyword = TokenFactory.tokenFromString('sync');
731 body.star = TokenFactory.tokenFromType(TokenType.STAR); 734 body.star = TokenFactory.tokenFromType(TokenType.STAR);
732 FunctionExpression node = 735 FunctionExpression node = _resolvedFunctionExpression(
733 _resolvedFunctionExpression(AstFactory.formalParameterList([]), body); 736 AstTestFactory.formalParameterList([]), body);
734 DartType resultType = _analyze(node); 737 DartType resultType = _analyze(node);
735 _assertFunctionType( 738 _assertFunctionType(
736 _typeProvider.iterableDynamicType, null, null, null, resultType); 739 _typeProvider.iterableDynamicType, null, null, null, resultType);
737 _listener.assertNoErrors(); 740 _listener.assertNoErrors();
738 } 741 }
739 742
740 void test_visitFunctionExpression_named_block() { 743 void test_visitFunctionExpression_named_block() {
741 // ({p1 : 0, p2 : 0}) {} 744 // ({p1 : 0, p2 : 0}) {}
742 DartType dynamicType = _typeProvider.dynamicType; 745 DartType dynamicType = _typeProvider.dynamicType;
743 FormalParameter p1 = AstFactory.namedFormalParameter( 746 FormalParameter p1 = AstTestFactory.namedFormalParameter(
744 AstFactory.simpleFormalParameter3("p1"), _resolvedInteger(0)); 747 AstTestFactory.simpleFormalParameter3("p1"), _resolvedInteger(0));
745 _setType(p1, dynamicType); 748 _setType(p1, dynamicType);
746 FormalParameter p2 = AstFactory.namedFormalParameter( 749 FormalParameter p2 = AstTestFactory.namedFormalParameter(
747 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 750 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
748 _setType(p2, dynamicType); 751 _setType(p2, dynamicType);
749 FunctionExpression node = _resolvedFunctionExpression( 752 FunctionExpression node = _resolvedFunctionExpression(
750 AstFactory.formalParameterList([p1, p2]), 753 AstTestFactory.formalParameterList([p1, p2]),
751 AstFactory.blockFunctionBody2()); 754 AstTestFactory.blockFunctionBody2());
752 _analyze5(p1); 755 _analyze5(p1);
753 _analyze5(p2); 756 _analyze5(p2);
754 DartType resultType = _analyze(node); 757 DartType resultType = _analyze(node);
755 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>(); 758 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>();
756 expectedNamedTypes["p1"] = dynamicType; 759 expectedNamedTypes["p1"] = dynamicType;
757 expectedNamedTypes["p2"] = dynamicType; 760 expectedNamedTypes["p2"] = dynamicType;
758 _assertFunctionType( 761 _assertFunctionType(
759 dynamicType, null, null, expectedNamedTypes, resultType); 762 dynamicType, null, null, expectedNamedTypes, resultType);
760 _listener.assertNoErrors(); 763 _listener.assertNoErrors();
761 } 764 }
762 765
763 void test_visitFunctionExpression_named_expression() { 766 void test_visitFunctionExpression_named_expression() {
764 // ({p : 0}) -> 0; 767 // ({p : 0}) -> 0;
765 DartType dynamicType = _typeProvider.dynamicType; 768 DartType dynamicType = _typeProvider.dynamicType;
766 FormalParameter p = AstFactory.namedFormalParameter( 769 FormalParameter p = AstTestFactory.namedFormalParameter(
767 AstFactory.simpleFormalParameter3("p"), _resolvedInteger(0)); 770 AstTestFactory.simpleFormalParameter3("p"), _resolvedInteger(0));
768 _setType(p, dynamicType); 771 _setType(p, dynamicType);
769 FunctionExpression node = _resolvedFunctionExpression( 772 FunctionExpression node = _resolvedFunctionExpression(
770 AstFactory.formalParameterList([p]), 773 AstTestFactory.formalParameterList([p]),
771 AstFactory.expressionFunctionBody(_resolvedInteger(0))); 774 AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
772 _analyze5(p); 775 _analyze5(p);
773 DartType resultType = _analyze(node); 776 DartType resultType = _analyze(node);
774 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>(); 777 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>();
775 expectedNamedTypes["p"] = dynamicType; 778 expectedNamedTypes["p"] = dynamicType;
776 _assertFunctionType( 779 _assertFunctionType(
777 _typeProvider.intType, null, null, expectedNamedTypes, resultType); 780 _typeProvider.intType, null, null, expectedNamedTypes, resultType);
778 _listener.assertNoErrors(); 781 _listener.assertNoErrors();
779 } 782 }
780 783
781 void test_visitFunctionExpression_normal_block() { 784 void test_visitFunctionExpression_normal_block() {
782 // (p1, p2) {} 785 // (p1, p2) {}
783 DartType dynamicType = _typeProvider.dynamicType; 786 DartType dynamicType = _typeProvider.dynamicType;
784 FormalParameter p1 = AstFactory.simpleFormalParameter3("p1"); 787 FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
785 _setType(p1, dynamicType); 788 _setType(p1, dynamicType);
786 FormalParameter p2 = AstFactory.simpleFormalParameter3("p2"); 789 FormalParameter p2 = AstTestFactory.simpleFormalParameter3("p2");
787 _setType(p2, dynamicType); 790 _setType(p2, dynamicType);
788 FunctionExpression node = _resolvedFunctionExpression( 791 FunctionExpression node = _resolvedFunctionExpression(
789 AstFactory.formalParameterList([p1, p2]), 792 AstTestFactory.formalParameterList([p1, p2]),
790 AstFactory.blockFunctionBody2()); 793 AstTestFactory.blockFunctionBody2());
791 _analyze5(p1); 794 _analyze5(p1);
792 _analyze5(p2); 795 _analyze5(p2);
793 DartType resultType = _analyze(node); 796 DartType resultType = _analyze(node);
794 _assertFunctionType(dynamicType, <DartType>[dynamicType, dynamicType], null, 797 _assertFunctionType(dynamicType, <DartType>[dynamicType, dynamicType], null,
795 null, resultType); 798 null, resultType);
796 _listener.assertNoErrors(); 799 _listener.assertNoErrors();
797 } 800 }
798 801
799 void test_visitFunctionExpression_normal_expression() { 802 void test_visitFunctionExpression_normal_expression() {
800 // (p1, p2) -> 0 803 // (p1, p2) -> 0
801 DartType dynamicType = _typeProvider.dynamicType; 804 DartType dynamicType = _typeProvider.dynamicType;
802 FormalParameter p = AstFactory.simpleFormalParameter3("p"); 805 FormalParameter p = AstTestFactory.simpleFormalParameter3("p");
803 _setType(p, dynamicType); 806 _setType(p, dynamicType);
804 FunctionExpression node = _resolvedFunctionExpression( 807 FunctionExpression node = _resolvedFunctionExpression(
805 AstFactory.formalParameterList([p]), 808 AstTestFactory.formalParameterList([p]),
806 AstFactory.expressionFunctionBody(_resolvedInteger(0))); 809 AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
807 _analyze5(p); 810 _analyze5(p);
808 DartType resultType = _analyze(node); 811 DartType resultType = _analyze(node);
809 _assertFunctionType( 812 _assertFunctionType(
810 _typeProvider.intType, <DartType>[dynamicType], null, null, resultType); 813 _typeProvider.intType, <DartType>[dynamicType], null, null, resultType);
811 _listener.assertNoErrors(); 814 _listener.assertNoErrors();
812 } 815 }
813 816
814 void test_visitFunctionExpression_normalAndNamed_block() { 817 void test_visitFunctionExpression_normalAndNamed_block() {
815 // (p1, {p2 : 0}) {} 818 // (p1, {p2 : 0}) {}
816 DartType dynamicType = _typeProvider.dynamicType; 819 DartType dynamicType = _typeProvider.dynamicType;
817 FormalParameter p1 = AstFactory.simpleFormalParameter3("p1"); 820 FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
818 _setType(p1, dynamicType); 821 _setType(p1, dynamicType);
819 FormalParameter p2 = AstFactory.namedFormalParameter( 822 FormalParameter p2 = AstTestFactory.namedFormalParameter(
820 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 823 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
821 _setType(p2, dynamicType); 824 _setType(p2, dynamicType);
822 FunctionExpression node = _resolvedFunctionExpression( 825 FunctionExpression node = _resolvedFunctionExpression(
823 AstFactory.formalParameterList([p1, p2]), 826 AstTestFactory.formalParameterList([p1, p2]),
824 AstFactory.blockFunctionBody2()); 827 AstTestFactory.blockFunctionBody2());
825 _analyze5(p2); 828 _analyze5(p2);
826 DartType resultType = _analyze(node); 829 DartType resultType = _analyze(node);
827 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>(); 830 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>();
828 expectedNamedTypes["p2"] = dynamicType; 831 expectedNamedTypes["p2"] = dynamicType;
829 _assertFunctionType(dynamicType, <DartType>[dynamicType], null, 832 _assertFunctionType(dynamicType, <DartType>[dynamicType], null,
830 expectedNamedTypes, resultType); 833 expectedNamedTypes, resultType);
831 _listener.assertNoErrors(); 834 _listener.assertNoErrors();
832 } 835 }
833 836
834 void test_visitFunctionExpression_normalAndNamed_expression() { 837 void test_visitFunctionExpression_normalAndNamed_expression() {
835 // (p1, {p2 : 0}) -> 0 838 // (p1, {p2 : 0}) -> 0
836 DartType dynamicType = _typeProvider.dynamicType; 839 DartType dynamicType = _typeProvider.dynamicType;
837 FormalParameter p1 = AstFactory.simpleFormalParameter3("p1"); 840 FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
838 _setType(p1, dynamicType); 841 _setType(p1, dynamicType);
839 FormalParameter p2 = AstFactory.namedFormalParameter( 842 FormalParameter p2 = AstTestFactory.namedFormalParameter(
840 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 843 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
841 _setType(p2, dynamicType); 844 _setType(p2, dynamicType);
842 FunctionExpression node = _resolvedFunctionExpression( 845 FunctionExpression node = _resolvedFunctionExpression(
843 AstFactory.formalParameterList([p1, p2]), 846 AstTestFactory.formalParameterList([p1, p2]),
844 AstFactory.expressionFunctionBody(_resolvedInteger(0))); 847 AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
845 _analyze5(p2); 848 _analyze5(p2);
846 DartType resultType = _analyze(node); 849 DartType resultType = _analyze(node);
847 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>(); 850 Map<String, DartType> expectedNamedTypes = new HashMap<String, DartType>();
848 expectedNamedTypes["p2"] = dynamicType; 851 expectedNamedTypes["p2"] = dynamicType;
849 _assertFunctionType(_typeProvider.intType, <DartType>[dynamicType], null, 852 _assertFunctionType(_typeProvider.intType, <DartType>[dynamicType], null,
850 expectedNamedTypes, resultType); 853 expectedNamedTypes, resultType);
851 _listener.assertNoErrors(); 854 _listener.assertNoErrors();
852 } 855 }
853 856
854 void test_visitFunctionExpression_normalAndPositional_block() { 857 void test_visitFunctionExpression_normalAndPositional_block() {
855 // (p1, [p2 = 0]) {} 858 // (p1, [p2 = 0]) {}
856 DartType dynamicType = _typeProvider.dynamicType; 859 DartType dynamicType = _typeProvider.dynamicType;
857 FormalParameter p1 = AstFactory.simpleFormalParameter3("p1"); 860 FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
858 _setType(p1, dynamicType); 861 _setType(p1, dynamicType);
859 FormalParameter p2 = AstFactory.positionalFormalParameter( 862 FormalParameter p2 = AstTestFactory.positionalFormalParameter(
860 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 863 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
861 _setType(p2, dynamicType); 864 _setType(p2, dynamicType);
862 FunctionExpression node = _resolvedFunctionExpression( 865 FunctionExpression node = _resolvedFunctionExpression(
863 AstFactory.formalParameterList([p1, p2]), 866 AstTestFactory.formalParameterList([p1, p2]),
864 AstFactory.blockFunctionBody2()); 867 AstTestFactory.blockFunctionBody2());
865 _analyze5(p1); 868 _analyze5(p1);
866 _analyze5(p2); 869 _analyze5(p2);
867 DartType resultType = _analyze(node); 870 DartType resultType = _analyze(node);
868 _assertFunctionType(dynamicType, <DartType>[dynamicType], 871 _assertFunctionType(dynamicType, <DartType>[dynamicType],
869 <DartType>[dynamicType], null, resultType); 872 <DartType>[dynamicType], null, resultType);
870 _listener.assertNoErrors(); 873 _listener.assertNoErrors();
871 } 874 }
872 875
873 void test_visitFunctionExpression_normalAndPositional_expression() { 876 void test_visitFunctionExpression_normalAndPositional_expression() {
874 // (p1, [p2 = 0]) -> 0 877 // (p1, [p2 = 0]) -> 0
875 DartType dynamicType = _typeProvider.dynamicType; 878 DartType dynamicType = _typeProvider.dynamicType;
876 FormalParameter p1 = AstFactory.simpleFormalParameter3("p1"); 879 FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
877 _setType(p1, dynamicType); 880 _setType(p1, dynamicType);
878 FormalParameter p2 = AstFactory.positionalFormalParameter( 881 FormalParameter p2 = AstTestFactory.positionalFormalParameter(
879 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 882 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
880 _setType(p2, dynamicType); 883 _setType(p2, dynamicType);
881 FunctionExpression node = _resolvedFunctionExpression( 884 FunctionExpression node = _resolvedFunctionExpression(
882 AstFactory.formalParameterList([p1, p2]), 885 AstTestFactory.formalParameterList([p1, p2]),
883 AstFactory.expressionFunctionBody(_resolvedInteger(0))); 886 AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
884 _analyze5(p1); 887 _analyze5(p1);
885 _analyze5(p2); 888 _analyze5(p2);
886 DartType resultType = _analyze(node); 889 DartType resultType = _analyze(node);
887 _assertFunctionType(_typeProvider.intType, <DartType>[dynamicType], 890 _assertFunctionType(_typeProvider.intType, <DartType>[dynamicType],
888 <DartType>[dynamicType], null, resultType); 891 <DartType>[dynamicType], null, resultType);
889 _listener.assertNoErrors(); 892 _listener.assertNoErrors();
890 } 893 }
891 894
892 void test_visitFunctionExpression_positional_block() { 895 void test_visitFunctionExpression_positional_block() {
893 // ([p1 = 0, p2 = 0]) {} 896 // ([p1 = 0, p2 = 0]) {}
894 DartType dynamicType = _typeProvider.dynamicType; 897 DartType dynamicType = _typeProvider.dynamicType;
895 FormalParameter p1 = AstFactory.positionalFormalParameter( 898 FormalParameter p1 = AstTestFactory.positionalFormalParameter(
896 AstFactory.simpleFormalParameter3("p1"), _resolvedInteger(0)); 899 AstTestFactory.simpleFormalParameter3("p1"), _resolvedInteger(0));
897 _setType(p1, dynamicType); 900 _setType(p1, dynamicType);
898 FormalParameter p2 = AstFactory.positionalFormalParameter( 901 FormalParameter p2 = AstTestFactory.positionalFormalParameter(
899 AstFactory.simpleFormalParameter3("p2"), _resolvedInteger(0)); 902 AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
900 _setType(p2, dynamicType); 903 _setType(p2, dynamicType);
901 FunctionExpression node = _resolvedFunctionExpression( 904 FunctionExpression node = _resolvedFunctionExpression(
902 AstFactory.formalParameterList([p1, p2]), 905 AstTestFactory.formalParameterList([p1, p2]),
903 AstFactory.blockFunctionBody2()); 906 AstTestFactory.blockFunctionBody2());
904 _analyze5(p1); 907 _analyze5(p1);
905 _analyze5(p2); 908 _analyze5(p2);
906 DartType resultType = _analyze(node); 909 DartType resultType = _analyze(node);
907 _assertFunctionType(dynamicType, null, <DartType>[dynamicType, dynamicType], 910 _assertFunctionType(dynamicType, null, <DartType>[dynamicType, dynamicType],
908 null, resultType); 911 null, resultType);
909 _listener.assertNoErrors(); 912 _listener.assertNoErrors();
910 } 913 }
911 914
912 void test_visitFunctionExpression_positional_expression() { 915 void test_visitFunctionExpression_positional_expression() {
913 // ([p1 = 0, p2 = 0]) -> 0 916 // ([p1 = 0, p2 = 0]) -> 0
914 DartType dynamicType = _typeProvider.dynamicType; 917 DartType dynamicType = _typeProvider.dynamicType;
915 FormalParameter p = AstFactory.positionalFormalParameter( 918 FormalParameter p = AstTestFactory.positionalFormalParameter(
916 AstFactory.simpleFormalParameter3("p"), _resolvedInteger(0)); 919 AstTestFactory.simpleFormalParameter3("p"), _resolvedInteger(0));
917 _setType(p, dynamicType); 920 _setType(p, dynamicType);
918 FunctionExpression node = _resolvedFunctionExpression( 921 FunctionExpression node = _resolvedFunctionExpression(
919 AstFactory.formalParameterList([p]), 922 AstTestFactory.formalParameterList([p]),
920 AstFactory.expressionFunctionBody(_resolvedInteger(0))); 923 AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
921 _analyze5(p); 924 _analyze5(p);
922 DartType resultType = _analyze(node); 925 DartType resultType = _analyze(node);
923 _assertFunctionType( 926 _assertFunctionType(
924 _typeProvider.intType, null, <DartType>[dynamicType], null, resultType); 927 _typeProvider.intType, null, <DartType>[dynamicType], null, resultType);
925 _listener.assertNoErrors(); 928 _listener.assertNoErrors();
926 } 929 }
927 930
928 void test_visitIndexExpression_getter() { 931 void test_visitIndexExpression_getter() {
929 // List a; 932 // List a;
930 // a[2] 933 // a[2]
931 InterfaceType listType = _typeProvider.listType; 934 InterfaceType listType = _typeProvider.listType;
932 SimpleIdentifier identifier = _resolvedVariable(listType, "a"); 935 SimpleIdentifier identifier = _resolvedVariable(listType, "a");
933 IndexExpression node = 936 IndexExpression node =
934 AstFactory.indexExpression(identifier, _resolvedInteger(2)); 937 AstTestFactory.indexExpression(identifier, _resolvedInteger(2));
935 MethodElement indexMethod = listType.element.methods[0]; 938 MethodElement indexMethod = listType.element.methods[0];
936 node.staticElement = indexMethod; 939 node.staticElement = indexMethod;
937 expect(_analyze(node), same(listType.typeArguments[0])); 940 expect(_analyze(node), same(listType.typeArguments[0]));
938 _listener.assertNoErrors(); 941 _listener.assertNoErrors();
939 } 942 }
940 943
941 void test_visitIndexExpression_setter() { 944 void test_visitIndexExpression_setter() {
942 // List a; 945 // List a;
943 // a[2] = 0 946 // a[2] = 0
944 InterfaceType listType = _typeProvider.listType; 947 InterfaceType listType = _typeProvider.listType;
945 SimpleIdentifier identifier = _resolvedVariable(listType, "a"); 948 SimpleIdentifier identifier = _resolvedVariable(listType, "a");
946 IndexExpression node = 949 IndexExpression node =
947 AstFactory.indexExpression(identifier, _resolvedInteger(2)); 950 AstTestFactory.indexExpression(identifier, _resolvedInteger(2));
948 MethodElement indexMethod = listType.element.methods[1]; 951 MethodElement indexMethod = listType.element.methods[1];
949 node.staticElement = indexMethod; 952 node.staticElement = indexMethod;
950 AstFactory.assignmentExpression(node, TokenType.EQ, AstFactory.integer(0)); 953 AstTestFactory.assignmentExpression(
954 node, TokenType.EQ, AstTestFactory.integer(0));
951 expect(_analyze(node), same(listType.typeArguments[0])); 955 expect(_analyze(node), same(listType.typeArguments[0]));
952 _listener.assertNoErrors(); 956 _listener.assertNoErrors();
953 } 957 }
954 958
955 void test_visitIndexExpression_typeParameters() { 959 void test_visitIndexExpression_typeParameters() {
956 // List<int> list = ... 960 // List<int> list = ...
957 // list[0] 961 // list[0]
958 InterfaceType intType = _typeProvider.intType; 962 InterfaceType intType = _typeProvider.intType;
959 InterfaceType listType = _typeProvider.listType; 963 InterfaceType listType = _typeProvider.listType;
960 // (int) -> E 964 // (int) -> E
961 MethodElement methodElement = getMethod(listType, "[]"); 965 MethodElement methodElement = getMethod(listType, "[]");
962 // "list" has type List<int> 966 // "list" has type List<int>
963 SimpleIdentifier identifier = AstFactory.identifier3("list"); 967 SimpleIdentifier identifier = AstTestFactory.identifier3("list");
964 InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]); 968 InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
965 identifier.staticType = listOfIntType; 969 identifier.staticType = listOfIntType;
966 // list[0] has MethodElement element (int) -> E 970 // list[0] has MethodElement element (int) -> E
967 IndexExpression indexExpression = 971 IndexExpression indexExpression =
968 AstFactory.indexExpression(identifier, AstFactory.integer(0)); 972 AstTestFactory.indexExpression(identifier, AstTestFactory.integer(0));
969 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType); 973 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType);
970 indexExpression.staticElement = indexMethod; 974 indexExpression.staticElement = indexMethod;
971 // analyze and assert result of the index expression 975 // analyze and assert result of the index expression
972 expect(_analyze(indexExpression), same(intType)); 976 expect(_analyze(indexExpression), same(intType));
973 _listener.assertNoErrors(); 977 _listener.assertNoErrors();
974 } 978 }
975 979
976 void test_visitIndexExpression_typeParameters_inSetterContext() { 980 void test_visitIndexExpression_typeParameters_inSetterContext() {
977 // List<int> list = ... 981 // List<int> list = ...
978 // list[0] = 0; 982 // list[0] = 0;
979 InterfaceType intType = _typeProvider.intType; 983 InterfaceType intType = _typeProvider.intType;
980 InterfaceType listType = _typeProvider.listType; 984 InterfaceType listType = _typeProvider.listType;
981 // (int, E) -> void 985 // (int, E) -> void
982 MethodElement methodElement = getMethod(listType, "[]="); 986 MethodElement methodElement = getMethod(listType, "[]=");
983 // "list" has type List<int> 987 // "list" has type List<int>
984 SimpleIdentifier identifier = AstFactory.identifier3("list"); 988 SimpleIdentifier identifier = AstTestFactory.identifier3("list");
985 InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]); 989 InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
986 identifier.staticType = listOfIntType; 990 identifier.staticType = listOfIntType;
987 // list[0] has MethodElement element (int) -> E 991 // list[0] has MethodElement element (int) -> E
988 IndexExpression indexExpression = 992 IndexExpression indexExpression =
989 AstFactory.indexExpression(identifier, AstFactory.integer(0)); 993 AstTestFactory.indexExpression(identifier, AstTestFactory.integer(0));
990 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType); 994 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType);
991 indexExpression.staticElement = indexMethod; 995 indexExpression.staticElement = indexMethod;
992 // list[0] should be in a setter context 996 // list[0] should be in a setter context
993 AstFactory.assignmentExpression( 997 AstTestFactory.assignmentExpression(
994 indexExpression, TokenType.EQ, AstFactory.integer(0)); 998 indexExpression, TokenType.EQ, AstTestFactory.integer(0));
995 // analyze and assert result of the index expression 999 // analyze and assert result of the index expression
996 expect(_analyze(indexExpression), same(intType)); 1000 expect(_analyze(indexExpression), same(intType));
997 _listener.assertNoErrors(); 1001 _listener.assertNoErrors();
998 } 1002 }
999 1003
1000 void test_visitInstanceCreationExpression_named() { 1004 void test_visitInstanceCreationExpression_named() {
1001 // new C.m() 1005 // new C.m()
1002 ClassElementImpl classElement = ElementFactory.classElement2("C"); 1006 ClassElementImpl classElement = ElementFactory.classElement2("C");
1003 String constructorName = "m"; 1007 String constructorName = "m";
1004 ConstructorElementImpl constructor = 1008 ConstructorElementImpl constructor =
1005 ElementFactory.constructorElement2(classElement, constructorName); 1009 ElementFactory.constructorElement2(classElement, constructorName);
1006 classElement.constructors = <ConstructorElement>[constructor]; 1010 classElement.constructors = <ConstructorElement>[constructor];
1007 InstanceCreationExpression node = AstFactory.instanceCreationExpression2( 1011 InstanceCreationExpression node = AstTestFactory
1008 null, 1012 .instanceCreationExpression2(
1009 AstFactory.typeName(classElement), 1013 null,
1010 [AstFactory.identifier3(constructorName)]); 1014 AstTestFactory.typeName(classElement),
1015 [AstTestFactory.identifier3(constructorName)]);
1011 node.staticElement = constructor; 1016 node.staticElement = constructor;
1012 expect(_analyze(node), same(classElement.type)); 1017 expect(_analyze(node), same(classElement.type));
1013 _listener.assertNoErrors(); 1018 _listener.assertNoErrors();
1014 } 1019 }
1015 1020
1016 void test_visitInstanceCreationExpression_typeParameters() { 1021 void test_visitInstanceCreationExpression_typeParameters() {
1017 // new C<I>() 1022 // new C<I>()
1018 ClassElementImpl elementC = ElementFactory.classElement2("C", ["E"]); 1023 ClassElementImpl elementC = ElementFactory.classElement2("C", ["E"]);
1019 ClassElementImpl elementI = ElementFactory.classElement2("I"); 1024 ClassElementImpl elementI = ElementFactory.classElement2("I");
1020 ConstructorElementImpl constructor = 1025 ConstructorElementImpl constructor =
1021 ElementFactory.constructorElement2(elementC, null); 1026 ElementFactory.constructorElement2(elementC, null);
1022 elementC.constructors = <ConstructorElement>[constructor]; 1027 elementC.constructors = <ConstructorElement>[constructor];
1023 TypeName typeName = 1028 TypeName typeName =
1024 AstFactory.typeName(elementC, [AstFactory.typeName(elementI)]); 1029 AstTestFactory.typeName(elementC, [AstTestFactory.typeName(elementI)]);
1025 typeName.type = elementC.type.instantiate(<DartType>[elementI.type]); 1030 typeName.type = elementC.type.instantiate(<DartType>[elementI.type]);
1026 InstanceCreationExpression node = 1031 InstanceCreationExpression node =
1027 AstFactory.instanceCreationExpression2(null, typeName); 1032 AstTestFactory.instanceCreationExpression2(null, typeName);
1028 node.staticElement = constructor; 1033 node.staticElement = constructor;
1029 InterfaceType interfaceType = _analyze(node) as InterfaceType; 1034 InterfaceType interfaceType = _analyze(node) as InterfaceType;
1030 List<DartType> typeArgs = interfaceType.typeArguments; 1035 List<DartType> typeArgs = interfaceType.typeArguments;
1031 expect(typeArgs.length, 1); 1036 expect(typeArgs.length, 1);
1032 expect(typeArgs[0], elementI.type); 1037 expect(typeArgs[0], elementI.type);
1033 _listener.assertNoErrors(); 1038 _listener.assertNoErrors();
1034 } 1039 }
1035 1040
1036 void test_visitInstanceCreationExpression_unnamed() { 1041 void test_visitInstanceCreationExpression_unnamed() {
1037 // new C() 1042 // new C()
1038 ClassElementImpl classElement = ElementFactory.classElement2("C"); 1043 ClassElementImpl classElement = ElementFactory.classElement2("C");
1039 ConstructorElementImpl constructor = 1044 ConstructorElementImpl constructor =
1040 ElementFactory.constructorElement2(classElement, null); 1045 ElementFactory.constructorElement2(classElement, null);
1041 classElement.constructors = <ConstructorElement>[constructor]; 1046 classElement.constructors = <ConstructorElement>[constructor];
1042 InstanceCreationExpression node = AstFactory.instanceCreationExpression2( 1047 InstanceCreationExpression node =
1043 null, AstFactory.typeName(classElement)); 1048 AstTestFactory.instanceCreationExpression2(
1049 null, AstTestFactory.typeName(classElement));
1044 node.staticElement = constructor; 1050 node.staticElement = constructor;
1045 expect(_analyze(node), same(classElement.type)); 1051 expect(_analyze(node), same(classElement.type));
1046 _listener.assertNoErrors(); 1052 _listener.assertNoErrors();
1047 } 1053 }
1048 1054
1049 void test_visitIntegerLiteral() { 1055 void test_visitIntegerLiteral() {
1050 // 42 1056 // 42
1051 Expression node = _resolvedInteger(42); 1057 Expression node = _resolvedInteger(42);
1052 expect(_analyze(node), same(_typeProvider.intType)); 1058 expect(_analyze(node), same(_typeProvider.intType));
1053 _listener.assertNoErrors(); 1059 _listener.assertNoErrors();
1054 } 1060 }
1055 1061
1056 void test_visitIsExpression_negated() { 1062 void test_visitIsExpression_negated() {
1057 // a is! String 1063 // a is! String
1058 Expression node = AstFactory.isExpression( 1064 Expression node = AstTestFactory.isExpression(
1059 _resolvedString("a"), true, AstFactory.typeName4("String")); 1065 _resolvedString("a"), true, AstTestFactory.typeName4("String"));
1060 expect(_analyze(node), same(_typeProvider.boolType)); 1066 expect(_analyze(node), same(_typeProvider.boolType));
1061 _listener.assertNoErrors(); 1067 _listener.assertNoErrors();
1062 } 1068 }
1063 1069
1064 void test_visitIsExpression_notNegated() { 1070 void test_visitIsExpression_notNegated() {
1065 // a is String 1071 // a is String
1066 Expression node = AstFactory.isExpression( 1072 Expression node = AstTestFactory.isExpression(
1067 _resolvedString("a"), false, AstFactory.typeName4("String")); 1073 _resolvedString("a"), false, AstTestFactory.typeName4("String"));
1068 expect(_analyze(node), same(_typeProvider.boolType)); 1074 expect(_analyze(node), same(_typeProvider.boolType));
1069 _listener.assertNoErrors(); 1075 _listener.assertNoErrors();
1070 } 1076 }
1071 1077
1072 void test_visitListLiteral_empty() { 1078 void test_visitListLiteral_empty() {
1073 // [] 1079 // []
1074 Expression node = AstFactory.listLiteral(); 1080 Expression node = AstTestFactory.listLiteral();
1075 DartType resultType = _analyze(node); 1081 DartType resultType = _analyze(node);
1076 _assertType2( 1082 _assertType2(
1077 _typeProvider.listType 1083 _typeProvider.listType
1078 .instantiate(<DartType>[_typeProvider.dynamicType]), 1084 .instantiate(<DartType>[_typeProvider.dynamicType]),
1079 resultType); 1085 resultType);
1080 _listener.assertNoErrors(); 1086 _listener.assertNoErrors();
1081 } 1087 }
1082 1088
1083 void test_visitListLiteral_nonEmpty() { 1089 void test_visitListLiteral_nonEmpty() {
1084 // [0] 1090 // [0]
1085 Expression node = AstFactory.listLiteral([_resolvedInteger(0)]); 1091 Expression node = AstTestFactory.listLiteral([_resolvedInteger(0)]);
1086 DartType resultType = _analyze(node); 1092 DartType resultType = _analyze(node);
1087 _assertType2( 1093 _assertType2(
1088 _typeProvider.listType 1094 _typeProvider.listType
1089 .instantiate(<DartType>[_typeProvider.dynamicType]), 1095 .instantiate(<DartType>[_typeProvider.dynamicType]),
1090 resultType); 1096 resultType);
1091 _listener.assertNoErrors(); 1097 _listener.assertNoErrors();
1092 } 1098 }
1093 1099
1094 void test_visitListLiteral_unresolved() { 1100 void test_visitListLiteral_unresolved() {
1095 _analyzer = _createAnalyzer(strongMode: true); 1101 _analyzer = _createAnalyzer(strongMode: true);
1096 // [a] // where 'a' is not resolved 1102 // [a] // where 'a' is not resolved
1097 Identifier identifier = AstFactory.identifier3('a'); 1103 Identifier identifier = AstTestFactory.identifier3('a');
1098 Expression node = AstFactory.listLiteral([identifier]); 1104 Expression node = AstTestFactory.listLiteral([identifier]);
1099 DartType resultType = _analyze(node); 1105 DartType resultType = _analyze(node);
1100 _assertType2( 1106 _assertType2(
1101 _typeProvider.listType 1107 _typeProvider.listType
1102 .instantiate(<DartType>[_typeProvider.dynamicType]), 1108 .instantiate(<DartType>[_typeProvider.dynamicType]),
1103 resultType); 1109 resultType);
1104 _listener.assertNoErrors(); 1110 _listener.assertNoErrors();
1105 } 1111 }
1106 1112
1107 void test_visitListLiteral_unresolved_multiple() { 1113 void test_visitListLiteral_unresolved_multiple() {
1108 _analyzer = _createAnalyzer(strongMode: true); 1114 _analyzer = _createAnalyzer(strongMode: true);
1109 // [0, a, 1] // where 'a' is not resolved 1115 // [0, a, 1] // where 'a' is not resolved
1110 Identifier identifier = AstFactory.identifier3('a'); 1116 Identifier identifier = AstTestFactory.identifier3('a');
1111 Expression node = AstFactory 1117 Expression node = AstTestFactory
1112 .listLiteral([_resolvedInteger(0), identifier, _resolvedInteger(1)]); 1118 .listLiteral([_resolvedInteger(0), identifier, _resolvedInteger(1)]);
1113 DartType resultType = _analyze(node); 1119 DartType resultType = _analyze(node);
1114 _assertType2( 1120 _assertType2(
1115 _typeProvider.listType.instantiate(<DartType>[_typeProvider.intType]), 1121 _typeProvider.listType.instantiate(<DartType>[_typeProvider.intType]),
1116 resultType); 1122 resultType);
1117 _listener.assertNoErrors(); 1123 _listener.assertNoErrors();
1118 } 1124 }
1119 1125
1120 void test_visitMapLiteral_empty() { 1126 void test_visitMapLiteral_empty() {
1121 // {} 1127 // {}
1122 Expression node = AstFactory.mapLiteral2(); 1128 Expression node = AstTestFactory.mapLiteral2();
1123 DartType resultType = _analyze(node); 1129 DartType resultType = _analyze(node);
1124 _assertType2( 1130 _assertType2(
1125 _typeProvider.mapType.instantiate( 1131 _typeProvider.mapType.instantiate(
1126 <DartType>[_typeProvider.dynamicType, _typeProvider.dynamicType]), 1132 <DartType>[_typeProvider.dynamicType, _typeProvider.dynamicType]),
1127 resultType); 1133 resultType);
1128 _listener.assertNoErrors(); 1134 _listener.assertNoErrors();
1129 } 1135 }
1130 1136
1131 void test_visitMapLiteral_nonEmpty() { 1137 void test_visitMapLiteral_nonEmpty() {
1132 // {"k" : 0} 1138 // {"k" : 0}
1133 Expression node = AstFactory 1139 Expression node = AstTestFactory.mapLiteral2(
1134 .mapLiteral2([AstFactory.mapLiteralEntry("k", _resolvedInteger(0))]); 1140 [AstTestFactory.mapLiteralEntry("k", _resolvedInteger(0))]);
1135 DartType resultType = _analyze(node); 1141 DartType resultType = _analyze(node);
1136 _assertType2( 1142 _assertType2(
1137 _typeProvider.mapType.instantiate( 1143 _typeProvider.mapType.instantiate(
1138 <DartType>[_typeProvider.dynamicType, _typeProvider.dynamicType]), 1144 <DartType>[_typeProvider.dynamicType, _typeProvider.dynamicType]),
1139 resultType); 1145 resultType);
1140 _listener.assertNoErrors(); 1146 _listener.assertNoErrors();
1141 } 1147 }
1142 1148
1143 void test_visitMethodInvocation_then() { 1149 void test_visitMethodInvocation_then() {
1144 // then() 1150 // then()
1145 Expression node = AstFactory.methodInvocation(null, "then"); 1151 Expression node = AstTestFactory.methodInvocation(null, "then");
1146 _analyze(node); 1152 _analyze(node);
1147 _listener.assertNoErrors(); 1153 _listener.assertNoErrors();
1148 } 1154 }
1149 1155
1150 void test_visitNamedExpression() { 1156 void test_visitNamedExpression() {
1151 // n: a 1157 // n: a
1152 Expression node = AstFactory.namedExpression2("n", _resolvedString("a")); 1158 Expression node =
1159 AstTestFactory.namedExpression2("n", _resolvedString("a"));
1153 expect(_analyze(node), same(_typeProvider.stringType)); 1160 expect(_analyze(node), same(_typeProvider.stringType));
1154 _listener.assertNoErrors(); 1161 _listener.assertNoErrors();
1155 } 1162 }
1156 1163
1157 void test_visitNullLiteral() { 1164 void test_visitNullLiteral() {
1158 // null 1165 // null
1159 Expression node = AstFactory.nullLiteral(); 1166 Expression node = AstTestFactory.nullLiteral();
1160 expect(_analyze(node), same(_typeProvider.bottomType)); 1167 expect(_analyze(node), same(_typeProvider.bottomType));
1161 _listener.assertNoErrors(); 1168 _listener.assertNoErrors();
1162 } 1169 }
1163 1170
1164 void test_visitParenthesizedExpression() { 1171 void test_visitParenthesizedExpression() {
1165 // (0) 1172 // (0)
1166 Expression node = AstFactory.parenthesizedExpression(_resolvedInteger(0)); 1173 Expression node =
1174 AstTestFactory.parenthesizedExpression(_resolvedInteger(0));
1167 expect(_analyze(node), same(_typeProvider.intType)); 1175 expect(_analyze(node), same(_typeProvider.intType));
1168 _listener.assertNoErrors(); 1176 _listener.assertNoErrors();
1169 } 1177 }
1170 1178
1171 void test_visitPostfixExpression_minusMinus() { 1179 void test_visitPostfixExpression_minusMinus() {
1172 // 0-- 1180 // 0--
1173 PostfixExpression node = AstFactory.postfixExpression( 1181 PostfixExpression node = AstTestFactory.postfixExpression(
1174 _resolvedInteger(0), TokenType.MINUS_MINUS); 1182 _resolvedInteger(0), TokenType.MINUS_MINUS);
1175 expect(_analyze(node), same(_typeProvider.intType)); 1183 expect(_analyze(node), same(_typeProvider.intType));
1176 _listener.assertNoErrors(); 1184 _listener.assertNoErrors();
1177 } 1185 }
1178 1186
1179 void test_visitPostfixExpression_plusPlus() { 1187 void test_visitPostfixExpression_plusPlus() {
1180 // 0++ 1188 // 0++
1181 PostfixExpression node = 1189 PostfixExpression node = AstTestFactory.postfixExpression(
1182 AstFactory.postfixExpression(_resolvedInteger(0), TokenType.PLUS_PLUS); 1190 _resolvedInteger(0), TokenType.PLUS_PLUS);
1183 expect(_analyze(node), same(_typeProvider.intType)); 1191 expect(_analyze(node), same(_typeProvider.intType));
1184 _listener.assertNoErrors(); 1192 _listener.assertNoErrors();
1185 } 1193 }
1186 1194
1187 void test_visitPrefixedIdentifier_getter() { 1195 void test_visitPrefixedIdentifier_getter() {
1188 DartType boolType = _typeProvider.boolType; 1196 DartType boolType = _typeProvider.boolType;
1189 PropertyAccessorElementImpl getter = 1197 PropertyAccessorElementImpl getter =
1190 ElementFactory.getterElement("b", false, boolType); 1198 ElementFactory.getterElement("b", false, boolType);
1191 PrefixedIdentifier node = AstFactory.identifier5("a", "b"); 1199 PrefixedIdentifier node = AstTestFactory.identifier5("a", "b");
1192 node.identifier.staticElement = getter; 1200 node.identifier.staticElement = getter;
1193 expect(_analyze(node), same(boolType)); 1201 expect(_analyze(node), same(boolType));
1194 _listener.assertNoErrors(); 1202 _listener.assertNoErrors();
1195 } 1203 }
1196 1204
1197 void test_visitPrefixedIdentifier_setter() { 1205 void test_visitPrefixedIdentifier_setter() {
1198 DartType boolType = _typeProvider.boolType; 1206 DartType boolType = _typeProvider.boolType;
1199 FieldElementImpl field = 1207 FieldElementImpl field =
1200 ElementFactory.fieldElement("b", false, false, false, boolType); 1208 ElementFactory.fieldElement("b", false, false, false, boolType);
1201 PropertyAccessorElement setter = field.setter; 1209 PropertyAccessorElement setter = field.setter;
1202 PrefixedIdentifier node = AstFactory.identifier5("a", "b"); 1210 PrefixedIdentifier node = AstTestFactory.identifier5("a", "b");
1203 node.identifier.staticElement = setter; 1211 node.identifier.staticElement = setter;
1204 expect(_analyze(node), same(boolType)); 1212 expect(_analyze(node), same(boolType));
1205 _listener.assertNoErrors(); 1213 _listener.assertNoErrors();
1206 } 1214 }
1207 1215
1208 void test_visitPrefixedIdentifier_variable() { 1216 void test_visitPrefixedIdentifier_variable() {
1209 VariableElementImpl variable = ElementFactory.localVariableElement2("b"); 1217 VariableElementImpl variable = ElementFactory.localVariableElement2("b");
1210 variable.type = _typeProvider.boolType; 1218 variable.type = _typeProvider.boolType;
1211 PrefixedIdentifier node = AstFactory.identifier5("a", "b"); 1219 PrefixedIdentifier node = AstTestFactory.identifier5("a", "b");
1212 node.identifier.staticElement = variable; 1220 node.identifier.staticElement = variable;
1213 expect(_analyze(node), same(_typeProvider.boolType)); 1221 expect(_analyze(node), same(_typeProvider.boolType));
1214 _listener.assertNoErrors(); 1222 _listener.assertNoErrors();
1215 } 1223 }
1216 1224
1217 void test_visitPrefixExpression_bang() { 1225 void test_visitPrefixExpression_bang() {
1218 // !0 1226 // !0
1219 PrefixExpression node = 1227 PrefixExpression node =
1220 AstFactory.prefixExpression(TokenType.BANG, _resolvedInteger(0)); 1228 AstTestFactory.prefixExpression(TokenType.BANG, _resolvedInteger(0));
1221 expect(_analyze(node), same(_typeProvider.boolType)); 1229 expect(_analyze(node), same(_typeProvider.boolType));
1222 _listener.assertNoErrors(); 1230 _listener.assertNoErrors();
1223 } 1231 }
1224 1232
1225 void test_visitPrefixExpression_minus() { 1233 void test_visitPrefixExpression_minus() {
1226 // -0 1234 // -0
1227 PrefixExpression node = 1235 PrefixExpression node =
1228 AstFactory.prefixExpression(TokenType.MINUS, _resolvedInteger(0)); 1236 AstTestFactory.prefixExpression(TokenType.MINUS, _resolvedInteger(0));
1229 MethodElement minusMethod = getMethod(_typeProvider.numType, "-"); 1237 MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
1230 node.staticElement = minusMethod; 1238 node.staticElement = minusMethod;
1231 expect(_analyze(node), same(_typeProvider.numType)); 1239 expect(_analyze(node), same(_typeProvider.numType));
1232 _listener.assertNoErrors(); 1240 _listener.assertNoErrors();
1233 } 1241 }
1234 1242
1235 void test_visitPrefixExpression_minusMinus() { 1243 void test_visitPrefixExpression_minusMinus() {
1236 // --0 1244 // --0
1237 PrefixExpression node = 1245 PrefixExpression node = AstTestFactory.prefixExpression(
1238 AstFactory.prefixExpression(TokenType.MINUS_MINUS, _resolvedInteger(0)); 1246 TokenType.MINUS_MINUS, _resolvedInteger(0));
1239 MethodElement minusMethod = getMethod(_typeProvider.numType, "-"); 1247 MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
1240 node.staticElement = minusMethod; 1248 node.staticElement = minusMethod;
1241 expect(_analyze(node), same(_typeProvider.intType)); 1249 expect(_analyze(node), same(_typeProvider.intType));
1242 _listener.assertNoErrors(); 1250 _listener.assertNoErrors();
1243 } 1251 }
1244 1252
1245 void test_visitPrefixExpression_not() { 1253 void test_visitPrefixExpression_not() {
1246 // !true 1254 // !true
1247 Expression node = AstFactory.prefixExpression( 1255 Expression node = AstTestFactory.prefixExpression(
1248 TokenType.BANG, AstFactory.booleanLiteral(true)); 1256 TokenType.BANG, AstTestFactory.booleanLiteral(true));
1249 expect(_analyze(node), same(_typeProvider.boolType)); 1257 expect(_analyze(node), same(_typeProvider.boolType));
1250 _listener.assertNoErrors(); 1258 _listener.assertNoErrors();
1251 } 1259 }
1252 1260
1253 void test_visitPrefixExpression_plusPlus() { 1261 void test_visitPrefixExpression_plusPlus() {
1254 // ++0 1262 // ++0
1255 PrefixExpression node = 1263 PrefixExpression node = AstTestFactory.prefixExpression(
1256 AstFactory.prefixExpression(TokenType.PLUS_PLUS, _resolvedInteger(0)); 1264 TokenType.PLUS_PLUS, _resolvedInteger(0));
1257 MethodElement plusMethod = getMethod(_typeProvider.numType, "+"); 1265 MethodElement plusMethod = getMethod(_typeProvider.numType, "+");
1258 node.staticElement = plusMethod; 1266 node.staticElement = plusMethod;
1259 expect(_analyze(node), same(_typeProvider.intType)); 1267 expect(_analyze(node), same(_typeProvider.intType));
1260 _listener.assertNoErrors(); 1268 _listener.assertNoErrors();
1261 } 1269 }
1262 1270
1263 void test_visitPrefixExpression_tilde() { 1271 void test_visitPrefixExpression_tilde() {
1264 // ~0 1272 // ~0
1265 PrefixExpression node = 1273 PrefixExpression node =
1266 AstFactory.prefixExpression(TokenType.TILDE, _resolvedInteger(0)); 1274 AstTestFactory.prefixExpression(TokenType.TILDE, _resolvedInteger(0));
1267 MethodElement tildeMethod = getMethod(_typeProvider.intType, "~"); 1275 MethodElement tildeMethod = getMethod(_typeProvider.intType, "~");
1268 node.staticElement = tildeMethod; 1276 node.staticElement = tildeMethod;
1269 expect(_analyze(node), same(_typeProvider.intType)); 1277 expect(_analyze(node), same(_typeProvider.intType));
1270 _listener.assertNoErrors(); 1278 _listener.assertNoErrors();
1271 } 1279 }
1272 1280
1273 void test_visitPropertyAccess_propagated_getter() { 1281 void test_visitPropertyAccess_propagated_getter() {
1274 DartType boolType = _typeProvider.boolType; 1282 DartType boolType = _typeProvider.boolType;
1275 PropertyAccessorElementImpl getter = 1283 PropertyAccessorElementImpl getter =
1276 ElementFactory.getterElement("b", false, boolType); 1284 ElementFactory.getterElement("b", false, boolType);
1277 PropertyAccess node = 1285 PropertyAccess node =
1278 AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"); 1286 AstTestFactory.propertyAccess2(AstTestFactory.identifier3("a"), "b");
1279 node.propertyName.propagatedElement = getter; 1287 node.propertyName.propagatedElement = getter;
1280 expect(_analyze2(node, false), same(boolType)); 1288 expect(_analyze2(node, false), same(boolType));
1281 _listener.assertNoErrors(); 1289 _listener.assertNoErrors();
1282 } 1290 }
1283 1291
1284 void test_visitPropertyAccess_propagated_setter() { 1292 void test_visitPropertyAccess_propagated_setter() {
1285 DartType boolType = _typeProvider.boolType; 1293 DartType boolType = _typeProvider.boolType;
1286 FieldElementImpl field = 1294 FieldElementImpl field =
1287 ElementFactory.fieldElement("b", false, false, false, boolType); 1295 ElementFactory.fieldElement("b", false, false, false, boolType);
1288 PropertyAccessorElement setter = field.setter; 1296 PropertyAccessorElement setter = field.setter;
1289 PropertyAccess node = 1297 PropertyAccess node =
1290 AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"); 1298 AstTestFactory.propertyAccess2(AstTestFactory.identifier3("a"), "b");
1291 node.propertyName.propagatedElement = setter; 1299 node.propertyName.propagatedElement = setter;
1292 expect(_analyze2(node, false), same(boolType)); 1300 expect(_analyze2(node, false), same(boolType));
1293 _listener.assertNoErrors(); 1301 _listener.assertNoErrors();
1294 } 1302 }
1295 1303
1296 void test_visitPropertyAccess_static_getter() { 1304 void test_visitPropertyAccess_static_getter() {
1297 DartType boolType = _typeProvider.boolType; 1305 DartType boolType = _typeProvider.boolType;
1298 PropertyAccessorElementImpl getter = 1306 PropertyAccessorElementImpl getter =
1299 ElementFactory.getterElement("b", false, boolType); 1307 ElementFactory.getterElement("b", false, boolType);
1300 PropertyAccess node = 1308 PropertyAccess node =
1301 AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"); 1309 AstTestFactory.propertyAccess2(AstTestFactory.identifier3("a"), "b");
1302 node.propertyName.staticElement = getter; 1310 node.propertyName.staticElement = getter;
1303 expect(_analyze(node), same(boolType)); 1311 expect(_analyze(node), same(boolType));
1304 _listener.assertNoErrors(); 1312 _listener.assertNoErrors();
1305 } 1313 }
1306 1314
1307 void test_visitPropertyAccess_static_setter() { 1315 void test_visitPropertyAccess_static_setter() {
1308 DartType boolType = _typeProvider.boolType; 1316 DartType boolType = _typeProvider.boolType;
1309 FieldElementImpl field = 1317 FieldElementImpl field =
1310 ElementFactory.fieldElement("b", false, false, false, boolType); 1318 ElementFactory.fieldElement("b", false, false, false, boolType);
1311 PropertyAccessorElement setter = field.setter; 1319 PropertyAccessorElement setter = field.setter;
1312 PropertyAccess node = 1320 PropertyAccess node =
1313 AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"); 1321 AstTestFactory.propertyAccess2(AstTestFactory.identifier3("a"), "b");
1314 node.propertyName.staticElement = setter; 1322 node.propertyName.staticElement = setter;
1315 expect(_analyze(node), same(boolType)); 1323 expect(_analyze(node), same(boolType));
1316 _listener.assertNoErrors(); 1324 _listener.assertNoErrors();
1317 } 1325 }
1318 1326
1319 void test_visitSimpleIdentifier_dynamic() { 1327 void test_visitSimpleIdentifier_dynamic() {
1320 // "dynamic" 1328 // "dynamic"
1321 SimpleIdentifier identifier = AstFactory.identifier3('dynamic'); 1329 SimpleIdentifier identifier = AstTestFactory.identifier3('dynamic');
1322 DynamicElementImpl element = DynamicElementImpl.instance; 1330 DynamicElementImpl element = DynamicElementImpl.instance;
1323 identifier.staticElement = element; 1331 identifier.staticElement = element;
1324 identifier.staticType = _typeProvider.typeType; 1332 identifier.staticType = _typeProvider.typeType;
1325 expect(_analyze(identifier), same(_typeProvider.typeType)); 1333 expect(_analyze(identifier), same(_typeProvider.typeType));
1326 _listener.assertNoErrors(); 1334 _listener.assertNoErrors();
1327 } 1335 }
1328 1336
1329 void test_visitSimpleStringLiteral() { 1337 void test_visitSimpleStringLiteral() {
1330 // "a" 1338 // "a"
1331 Expression node = _resolvedString("a"); 1339 Expression node = _resolvedString("a");
1332 expect(_analyze(node), same(_typeProvider.stringType)); 1340 expect(_analyze(node), same(_typeProvider.stringType));
1333 _listener.assertNoErrors(); 1341 _listener.assertNoErrors();
1334 } 1342 }
1335 1343
1336 void test_visitStringInterpolation() { 1344 void test_visitStringInterpolation() {
1337 // "a${'b'}c" 1345 // "a${'b'}c"
1338 Expression node = AstFactory.string([ 1346 Expression node = AstTestFactory.string([
1339 AstFactory.interpolationString("a", "a"), 1347 AstTestFactory.interpolationString("a", "a"),
1340 AstFactory.interpolationExpression(_resolvedString("b")), 1348 AstTestFactory.interpolationExpression(_resolvedString("b")),
1341 AstFactory.interpolationString("c", "c") 1349 AstTestFactory.interpolationString("c", "c")
1342 ]); 1350 ]);
1343 expect(_analyze(node), same(_typeProvider.stringType)); 1351 expect(_analyze(node), same(_typeProvider.stringType));
1344 _listener.assertNoErrors(); 1352 _listener.assertNoErrors();
1345 } 1353 }
1346 1354
1347 void test_visitSuperExpression() { 1355 void test_visitSuperExpression() {
1348 // super 1356 // super
1349 InterfaceType superType = ElementFactory.classElement2("A").type; 1357 InterfaceType superType = ElementFactory.classElement2("A").type;
1350 InterfaceType thisType = ElementFactory.classElement("B", superType).type; 1358 InterfaceType thisType = ElementFactory.classElement("B", superType).type;
1351 Expression node = AstFactory.superExpression(); 1359 Expression node = AstTestFactory.superExpression();
1352 expect(_analyze3(node, thisType), same(thisType)); 1360 expect(_analyze3(node, thisType), same(thisType));
1353 _listener.assertNoErrors(); 1361 _listener.assertNoErrors();
1354 } 1362 }
1355 1363
1356 void test_visitSymbolLiteral() { 1364 void test_visitSymbolLiteral() {
1357 expect(_analyze(AstFactory.symbolLiteral(["a"])), 1365 expect(_analyze(AstTestFactory.symbolLiteral(["a"])),
1358 same(_typeProvider.symbolType)); 1366 same(_typeProvider.symbolType));
1359 } 1367 }
1360 1368
1361 void test_visitThisExpression() { 1369 void test_visitThisExpression() {
1362 // this 1370 // this
1363 InterfaceType thisType = ElementFactory 1371 InterfaceType thisType = ElementFactory
1364 .classElement("B", ElementFactory.classElement2("A").type) 1372 .classElement("B", ElementFactory.classElement2("A").type)
1365 .type; 1373 .type;
1366 Expression node = AstFactory.thisExpression(); 1374 Expression node = AstTestFactory.thisExpression();
1367 expect(_analyze3(node, thisType), same(thisType)); 1375 expect(_analyze3(node, thisType), same(thisType));
1368 _listener.assertNoErrors(); 1376 _listener.assertNoErrors();
1369 } 1377 }
1370 1378
1371 void test_visitThrowExpression_withoutValue() { 1379 void test_visitThrowExpression_withoutValue() {
1372 // throw 1380 // throw
1373 Expression node = AstFactory.throwExpression(); 1381 Expression node = AstTestFactory.throwExpression();
1374 expect(_analyze(node), same(_typeProvider.bottomType)); 1382 expect(_analyze(node), same(_typeProvider.bottomType));
1375 _listener.assertNoErrors(); 1383 _listener.assertNoErrors();
1376 } 1384 }
1377 1385
1378 void test_visitThrowExpression_withValue() { 1386 void test_visitThrowExpression_withValue() {
1379 // throw 0 1387 // throw 0
1380 Expression node = AstFactory.throwExpression2(_resolvedInteger(0)); 1388 Expression node = AstTestFactory.throwExpression2(_resolvedInteger(0));
1381 expect(_analyze(node), same(_typeProvider.bottomType)); 1389 expect(_analyze(node), same(_typeProvider.bottomType));
1382 _listener.assertNoErrors(); 1390 _listener.assertNoErrors();
1383 } 1391 }
1384 1392
1385 /** 1393 /**
1386 * Return the type associated with the given expression after the static type analyzer has 1394 * Return the type associated with the given expression after the static type analyzer has
1387 * computed a type for it. 1395 * computed a type for it.
1388 * 1396 *
1389 * @param node the expression with which the type is associated 1397 * @param node the expression with which the type is associated
1390 * @return the type associated with the expression 1398 * @return the type associated with the expression
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1555 1563
1556 /** 1564 /**
1557 * Return a simple identifier that has been resolved to a variable element wit h the given type. 1565 * Return a simple identifier that has been resolved to a variable element wit h the given type.
1558 * 1566 *
1559 * @param type the type of the variable being represented 1567 * @param type the type of the variable being represented
1560 * @param variableName the name of the variable 1568 * @param variableName the name of the variable
1561 * @return a simple identifier that has been resolved to a variable element wi th the given type 1569 * @return a simple identifier that has been resolved to a variable element wi th the given type
1562 */ 1570 */
1563 SimpleIdentifier _propagatedVariable( 1571 SimpleIdentifier _propagatedVariable(
1564 InterfaceType type, String variableName) { 1572 InterfaceType type, String variableName) {
1565 SimpleIdentifier identifier = AstFactory.identifier3(variableName); 1573 SimpleIdentifier identifier = AstTestFactory.identifier3(variableName);
1566 VariableElementImpl element = 1574 VariableElementImpl element =
1567 ElementFactory.localVariableElement(identifier); 1575 ElementFactory.localVariableElement(identifier);
1568 element.type = type; 1576 element.type = type;
1569 identifier.staticType = _typeProvider.dynamicType; 1577 identifier.staticType = _typeProvider.dynamicType;
1570 identifier.propagatedElement = element; 1578 identifier.propagatedElement = element;
1571 identifier.propagatedType = type; 1579 identifier.propagatedType = type;
1572 return identifier; 1580 return identifier;
1573 } 1581 }
1574 1582
1575 /** 1583 /**
1576 * Return a boolean literal with the given [value] that has been resolved to 1584 * Return a boolean literal with the given [value] that has been resolved to
1577 * the correct type. 1585 * the correct type.
1578 */ 1586 */
1579 BooleanLiteral _resolvedBool(bool value) { 1587 BooleanLiteral _resolvedBool(bool value) {
1580 BooleanLiteral literal = AstFactory.booleanLiteral(value); 1588 BooleanLiteral literal = AstTestFactory.booleanLiteral(value);
1581 literal.staticType = _typeProvider.intType; 1589 literal.staticType = _typeProvider.intType;
1582 return literal; 1590 return literal;
1583 } 1591 }
1584 1592
1585 /** 1593 /**
1586 * Return an integer literal that has been resolved to the correct type. 1594 * Return an integer literal that has been resolved to the correct type.
1587 * 1595 *
1588 * @param value the value of the literal 1596 * @param value the value of the literal
1589 * @return an integer literal that has been resolved to the correct type 1597 * @return an integer literal that has been resolved to the correct type
1590 */ 1598 */
1591 DoubleLiteral _resolvedDouble(double value) { 1599 DoubleLiteral _resolvedDouble(double value) {
1592 DoubleLiteral literal = AstFactory.doubleLiteral(value); 1600 DoubleLiteral literal = AstTestFactory.doubleLiteral(value);
1593 literal.staticType = _typeProvider.doubleType; 1601 literal.staticType = _typeProvider.doubleType;
1594 return literal; 1602 return literal;
1595 } 1603 }
1596 1604
1597 /** 1605 /**
1598 * Create a function expression that has an element associated with it, where the element has an 1606 * Create a function expression that has an element associated with it, where the element has an
1599 * incomplete type associated with it (just like the one 1607 * incomplete type associated with it (just like the one
1600 * [ElementBuilder.visitFunctionExpression] would have built if we had 1608 * [ElementBuilder.visitFunctionExpression] would have built if we had
1601 * run it). 1609 * run it).
1602 * 1610 *
1603 * @param parameters the parameters to the function 1611 * @param parameters the parameters to the function
1604 * @param body the body of the function 1612 * @param body the body of the function
1605 * @return a resolved function expression 1613 * @return a resolved function expression
1606 */ 1614 */
1607 FunctionExpression _resolvedFunctionExpression( 1615 FunctionExpression _resolvedFunctionExpression(
1608 FormalParameterList parameters, FunctionBody body) { 1616 FormalParameterList parameters, FunctionBody body) {
1609 List<ParameterElement> parameterElements = new List<ParameterElement>(); 1617 List<ParameterElement> parameterElements = new List<ParameterElement>();
1610 for (FormalParameter parameter in parameters.parameters) { 1618 for (FormalParameter parameter in parameters.parameters) {
1611 ParameterElementImpl element = 1619 ParameterElementImpl element =
1612 new ParameterElementImpl.forNode(parameter.identifier); 1620 new ParameterElementImpl.forNode(parameter.identifier);
1613 element.parameterKind = parameter.kind; 1621 element.parameterKind = parameter.kind;
1614 element.type = _typeProvider.dynamicType; 1622 element.type = _typeProvider.dynamicType;
1615 parameter.identifier.staticElement = element; 1623 parameter.identifier.staticElement = element;
1616 parameterElements.add(element); 1624 parameterElements.add(element);
1617 } 1625 }
1618 FunctionExpression node = AstFactory.functionExpression2(parameters, body); 1626 FunctionExpression node =
1627 AstTestFactory.functionExpression2(parameters, body);
1619 FunctionElementImpl element = new FunctionElementImpl.forNode(null); 1628 FunctionElementImpl element = new FunctionElementImpl.forNode(null);
1620 element.parameters = parameterElements; 1629 element.parameters = parameterElements;
1621 element.type = new FunctionTypeImpl(element); 1630 element.type = new FunctionTypeImpl(element);
1622 node.element = element; 1631 node.element = element;
1623 return node; 1632 return node;
1624 } 1633 }
1625 1634
1626 /** 1635 /**
1627 * Return an integer literal that has been resolved to the correct type. 1636 * Return an integer literal that has been resolved to the correct type.
1628 * 1637 *
1629 * @param value the value of the literal 1638 * @param value the value of the literal
1630 * @return an integer literal that has been resolved to the correct type 1639 * @return an integer literal that has been resolved to the correct type
1631 */ 1640 */
1632 IntegerLiteral _resolvedInteger(int value) { 1641 IntegerLiteral _resolvedInteger(int value) {
1633 IntegerLiteral literal = AstFactory.integer(value); 1642 IntegerLiteral literal = AstTestFactory.integer(value);
1634 literal.staticType = _typeProvider.intType; 1643 literal.staticType = _typeProvider.intType;
1635 return literal; 1644 return literal;
1636 } 1645 }
1637 1646
1638 /** 1647 /**
1639 * Return a string literal that has been resolved to the correct type. 1648 * Return a string literal that has been resolved to the correct type.
1640 * 1649 *
1641 * @param value the value of the literal 1650 * @param value the value of the literal
1642 * @return a string literal that has been resolved to the correct type 1651 * @return a string literal that has been resolved to the correct type
1643 */ 1652 */
1644 SimpleStringLiteral _resolvedString(String value) { 1653 SimpleStringLiteral _resolvedString(String value) {
1645 SimpleStringLiteral string = AstFactory.string2(value); 1654 SimpleStringLiteral string = AstTestFactory.string2(value);
1646 string.staticType = _typeProvider.stringType; 1655 string.staticType = _typeProvider.stringType;
1647 return string; 1656 return string;
1648 } 1657 }
1649 1658
1650 /** 1659 /**
1651 * Return a simple identifier that has been resolved to a variable element wit h the given type. 1660 * Return a simple identifier that has been resolved to a variable element wit h the given type.
1652 * 1661 *
1653 * @param type the type of the variable being represented 1662 * @param type the type of the variable being represented
1654 * @param variableName the name of the variable 1663 * @param variableName the name of the variable
1655 * @return a simple identifier that has been resolved to a variable element wi th the given type 1664 * @return a simple identifier that has been resolved to a variable element wi th the given type
1656 */ 1665 */
1657 SimpleIdentifier _resolvedVariable(InterfaceType type, String variableName) { 1666 SimpleIdentifier _resolvedVariable(InterfaceType type, String variableName) {
1658 SimpleIdentifier identifier = AstFactory.identifier3(variableName); 1667 SimpleIdentifier identifier = AstTestFactory.identifier3(variableName);
1659 VariableElementImpl element = 1668 VariableElementImpl element =
1660 ElementFactory.localVariableElement(identifier); 1669 ElementFactory.localVariableElement(identifier);
1661 element.type = type; 1670 element.type = type;
1662 identifier.staticElement = element; 1671 identifier.staticElement = element;
1663 identifier.staticType = type; 1672 identifier.staticType = type;
1664 return identifier; 1673 return identifier;
1665 } 1674 }
1666 1675
1667 /** 1676 /**
1668 * Set the type of the given parameter to the given type. 1677 * Set the type of the given parameter to the given type.
1669 * 1678 *
1670 * @param parameter the parameter whose type is to be set 1679 * @param parameter the parameter whose type is to be set
1671 * @param type the new type of the given parameter 1680 * @param type the new type of the given parameter
1672 */ 1681 */
1673 void _setType(FormalParameter parameter, DartType type) { 1682 void _setType(FormalParameter parameter, DartType type) {
1674 SimpleIdentifier identifier = parameter.identifier; 1683 SimpleIdentifier identifier = parameter.identifier;
1675 Element element = identifier.staticElement; 1684 Element element = identifier.staticElement;
1676 if (element is! ParameterElement) { 1685 if (element is! ParameterElement) {
1677 element = new ParameterElementImpl.forNode(identifier); 1686 element = new ParameterElementImpl.forNode(identifier);
1678 identifier.staticElement = element; 1687 identifier.staticElement = element;
1679 } 1688 }
1680 (element as ParameterElementImpl).type = type; 1689 (element as ParameterElementImpl).type = type;
1681 } 1690 }
1682 } 1691 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/resolver_test_case.dart ('k') | pkg/analyzer/test/generated/utilities_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698