| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:expect/expect.dart'; | 5 import 'package:expect/expect.dart'; |
| 6 import | 6 import |
| 7 '../../../sdk/lib/_internal/compiler/implementation/types/types.dart' | 7 '../../../sdk/lib/_internal/compiler/implementation/types/types.dart' |
| 8 show TypeMask; | 8 show TypeMask; |
| 9 | 9 |
| 10 import 'compiler_helper.dart'; | 10 import 'compiler_helper.dart'; |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 | 434 |
| 435 testSpecialization2() { | 435 testSpecialization2() { |
| 436 var a = topLevelGetter(); | 436 var a = topLevelGetter(); |
| 437 // Make [a] a captured variable. This should disable receiver | 437 // Make [a] a captured variable. This should disable receiver |
| 438 // specialization on [a]. | 438 // specialization on [a]. |
| 439 (() => a.toString())(); | 439 (() => a.toString())(); |
| 440 a - 42; | 440 a - 42; |
| 441 return a; | 441 return a; |
| 442 } | 442 } |
| 443 | 443 |
| 444 testSpecialization3() { |
| 445 var a = returnDynamic() ? null : 42; |
| 446 a.toString(); |
| 447 // Test that calling an [Object] method on [a] will not lead to |
| 448 // infer that [a] is not null; |
| 449 return a; |
| 450 } |
| 451 |
| 444 testReturnInvokeDynamicGetter() => new A().myFactory(); | 452 testReturnInvokeDynamicGetter() => new A().myFactory(); |
| 445 | 453 |
| 446 var topLevelConstList = const [42]; | 454 var topLevelConstList = const [42]; |
| 447 | 455 |
| 448 get topLevelGetter => 42; | 456 get topLevelGetter => 42; |
| 449 returnDynamic() => topLevelGetter(42); | 457 returnDynamic() => topLevelGetter(42); |
| 450 returnTopLevelGetter() => topLevelGetter; | 458 returnTopLevelGetter() => topLevelGetter; |
| 451 | 459 |
| 452 class A { | 460 class A { |
| 453 factory A() = A.generative; | 461 factory A() = A.generative; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 ..returnInt8() | 583 ..returnInt8() |
| 576 ..returnInt9(); | 584 ..returnInt9(); |
| 577 testReturnElementOfConstList1(); | 585 testReturnElementOfConstList1(); |
| 578 testReturnElementOfConstList2(); | 586 testReturnElementOfConstList2(); |
| 579 testReturnItselfOrInt(topLevelGetter()); | 587 testReturnItselfOrInt(topLevelGetter()); |
| 580 testReturnInvokeDynamicGetter(); | 588 testReturnInvokeDynamicGetter(); |
| 581 testCascade1(); | 589 testCascade1(); |
| 582 testCascade2(); | 590 testCascade2(); |
| 583 testSpecialization1(); | 591 testSpecialization1(); |
| 584 testSpecialization2(); | 592 testSpecialization2(); |
| 593 testSpecialization3(); |
| 585 } | 594 } |
| 586 """; | 595 """; |
| 587 | 596 |
| 588 void main() { | 597 void main() { |
| 589 Uri uri = new Uri(scheme: 'source'); | 598 Uri uri = new Uri(scheme: 'source'); |
| 590 var compiler = compilerFor(TEST, uri); | 599 var compiler = compilerFor(TEST, uri); |
| 591 compiler.runCompiler(uri); | 600 compiler.runCompiler(uri); |
| 592 var typesTask = compiler.typesTask; | 601 var typesTask = compiler.typesTask; |
| 593 var typesInferrer = typesTask.typesInferrer; | 602 var typesInferrer = typesTask.typesInferrer; |
| 594 | 603 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 Expect.equals(new TypeMask.nonNullExact(cls.rawType), | 708 Expect.equals(new TypeMask.nonNullExact(cls.rawType), |
| 700 typesInferrer.getReturnTypeOfElement(element)); | 709 typesInferrer.getReturnTypeOfElement(element)); |
| 701 } | 710 } |
| 702 checkFactoryConstructor('A', ''); | 711 checkFactoryConstructor('A', ''); |
| 703 | 712 |
| 704 checkReturn('testCascade1', typesTask.growableListType); | 713 checkReturn('testCascade1', typesTask.growableListType); |
| 705 checkReturn('testCascade2', new TypeMask.nonNullExact( | 714 checkReturn('testCascade2', new TypeMask.nonNullExact( |
| 706 typesTask.rawTypeOf(findElement(compiler, 'CascadeHelper')))); | 715 typesTask.rawTypeOf(findElement(compiler, 'CascadeHelper')))); |
| 707 checkReturn('testSpecialization1', typesTask.numType); | 716 checkReturn('testSpecialization1', typesTask.numType); |
| 708 checkReturn('testSpecialization2', typesTask.dynamicType); | 717 checkReturn('testSpecialization2', typesTask.dynamicType); |
| 718 checkReturn('testSpecialization3', typesTask.intType.nullable()); |
| 709 } | 719 } |
| OLD | NEW |