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

Side by Side Diff: pkg/analyzer/test/src/task/strong/checker_test.dart

Issue 2380863003: fix #27135 and fix #27449 strong mode does not use propagated types (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.src.task.strong.checker_test; 5 library analyzer.test.src.task.strong.checker_test;
6 6
7 import 'package:test_reflective_loader/test_reflective_loader.dart'; 7 import 'package:test_reflective_loader/test_reflective_loader.dart';
8 8
9 import 'strong_test_helper.dart'; 9 import 'strong_test_helper.dart';
10 10
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 StrFun f4 = foo; 490 StrFun f4 = foo;
491 f4("hello"); 491 f4("hello");
492 a.baz1("hello"); 492 a.baz1("hello");
493 var b1 = a.baz1; 493 var b1 = a.baz1;
494 (/*info:DYNAMIC_INVOKE*/b1("hello")); 494 (/*info:DYNAMIC_INVOKE*/b1("hello"));
495 A.baz2("hello"); 495 A.baz2("hello");
496 var b2 = A.baz2; 496 var b2 = A.baz2;
497 (/*info:DYNAMIC_INVOKE*/b2("hello")); 497 (/*info:DYNAMIC_INVOKE*/b2("hello"));
498 498
499 dynamic a1 = new B(); 499 dynamic a1 = new B();
500 (/*info:DYNAMIC_INVOKE*/a1./*info:UNDEFINED_GETTER*/x); 500 (/*info:DYNAMIC_INVOKE*/a1.x);
501 a1.toString(); 501 a1.toString();
502 (/*info:DYNAMIC_INVOKE*/a1.toString(42)); 502 (/*info:DYNAMIC_INVOKE*/a1.toString(42));
503 var toStringClosure = a1.toString; 503 var toStringClosure = a1.toString;
504 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure()); 504 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure());
505 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure(42)); 505 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure(42));
506 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure("hello")); 506 (/*info:DYNAMIC_INVOKE*/a1.toStringClosure("hello"));
507 a1.hashCode; 507 a1.hashCode;
508 508
509 dynamic toString = () => null; 509 dynamic toString = () => null;
510 (/*info:DYNAMIC_INVOKE*/toString()); 510 (/*info:DYNAMIC_INVOKE*/toString());
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 y = /*error:INVALID_ASSIGNMENT*/f(3); 652 y = /*error:INVALID_ASSIGNMENT*/f(3);
653 y = f.col(3.0); 653 y = f.col(3.0);
654 f(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3.0); 654 f(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3.0);
655 f.col(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3); 655 f.col(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3);
656 } 656 }
657 { 657 {
658 Function f = new B(); 658 Function f = new B();
659 int x; 659 int x;
660 double y; 660 double y;
661 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); 661 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3);
662 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE, info:INVALID_ASSIGNMENT*/f.col (3.0); 662 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f.col(3.0);
663 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); 663 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3);
664 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f.col(3.0); 664 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f.col(3.0);
665 /*info:DYNAMIC_INVOKE*/f(3.0); 665 /*info:DYNAMIC_INVOKE*/f(3.0);
666 // Through type propagation, we know f is actually a B, hence the 666 // Through type propagation, we know f is actually a B, hence the
667 // hint. 667 // hint.
668 /*info:DYNAMIC_INVOKE*/f.col(/*info:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3); 668 /*info:DYNAMIC_INVOKE*/f.col(3);
669 } 669 }
670 { 670 {
671 A f = new B(); 671 A f = new B();
672 int x; 672 int x;
673 double y; 673 double y;
674 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); 674 x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3);
675 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); 675 y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3);
676 /*info:DYNAMIC_INVOKE*/f(3.0); 676 /*info:DYNAMIC_INVOKE*/f(3.0);
677 } 677 }
678 { 678 {
679 dynamic g = new B(); 679 dynamic g = new B();
680 /*info:DYNAMIC_INVOKE*/g.call(/*info:ARGUMENT_TYPE_NOT_ASSIGNABLE*/32.0); 680 /*info:DYNAMIC_INVOKE*/g.call(32.0);
681 /*info:DYNAMIC_INVOKE*/g.col(42.0); 681 /*info:DYNAMIC_INVOKE*/g.col(42.0);
682 /*info:DYNAMIC_INVOKE*/g.foo(42.0); 682 /*info:DYNAMIC_INVOKE*/g.foo(42.0);
683 /*info:DYNAMIC_INVOKE*/g./*info:UNDEFINED_GETTER*/x; 683 /*info:DYNAMIC_INVOKE*/g.x;
684 A f = new B(); 684 A f = new B();
685 /*info:DYNAMIC_INVOKE*/f.col(42.0); 685 /*info:DYNAMIC_INVOKE*/f.col(42.0);
686 /*info:DYNAMIC_INVOKE*/f.foo(42.0); 686 /*info:DYNAMIC_INVOKE*/f.foo(42.0);
687 /*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_GETTER*/x; 687 /*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_GETTER*/x;
688 } 688 }
689 } 689 }
690 '''); 690 ''');
691 } 691 }
692 692
693 void test_factoryConstructorDowncast() { 693 void test_factoryConstructorDowncast() {
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
1397 top = right; 1397 top = right;
1398 top = bot; 1398 top = bot;
1399 top = top; 1399 top = top;
1400 top = left; 1400 top = left;
1401 1401
1402 left = /*warning:DOWN_CAST_COMPOSITE*/top; 1402 left = /*warning:DOWN_CAST_COMPOSITE*/top;
1403 left = left; 1403 left = left;
1404 left = /*error:INVALID_ASSIGNMENT*/right; 1404 left = /*error:INVALID_ASSIGNMENT*/right;
1405 left = bot; 1405 left = bot;
1406 1406
1407 right = /*info:INVALID_ASSIGNMENT,warning:DOWN_CAST_COMPOSITE*/top; 1407 right = /*warning:DOWN_CAST_COMPOSITE*/top;
1408 right = /*error:INVALID_ASSIGNMENT*/left; 1408 right = /*error:INVALID_ASSIGNMENT*/left;
1409 right = /*info:INVALID_ASSIGNMENT*/right; 1409 right = right;
1410 right = bot; 1410 right = bot;
1411 1411
1412 bot = /*warning:DOWN_CAST_COMPOSITE*/top; 1412 bot = /*warning:DOWN_CAST_COMPOSITE*/top;
1413 bot = /*warning:DOWN_CAST_COMPOSITE*/left; 1413 bot = /*warning:DOWN_CAST_COMPOSITE*/left;
1414 bot = /*warning:DOWN_CAST_COMPOSITE*/right; 1414 bot = /*warning:DOWN_CAST_COMPOSITE*/right;
1415 bot = bot; 1415 bot = bot;
1416 } 1416 }
1417 } 1417 }
1418 '''); 1418 ''');
1419 } 1419 }
(...skipping 2529 matching lines...) Expand 10 before | Expand all | Expand 10 after
3949 void _addMetaLibrary() { 3949 void _addMetaLibrary() {
3950 addFile(r''' 3950 addFile(r'''
3951 library meta; 3951 library meta;
3952 class _Checked { const _Checked(); } 3952 class _Checked { const _Checked(); }
3953 const Object checked = const _Checked(); 3953 const Object checked = const _Checked();
3954 3954
3955 class _Virtual { const _Virtual(); } 3955 class _Virtual { const _Virtual(); }
3956 const Object virtual = const _Virtual(); 3956 const Object virtual = const _Virtual();
3957 ''', name: '/meta.dart'); 3957 ''', name: '/meta.dart');
3958 } 3958 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/strong_mode_test.dart ('k') | pkg/analyzer/test/src/task/strong/inferred_type_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698