| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 "package:async_helper/async_helper.dart"; | 6 import "package:async_helper/async_helper.dart"; |
| 7 import 'compiler_helper.dart'; | 7 import 'compiler_helper.dart'; |
| 8 | 8 |
| 9 const String TEST = """ | 9 const String TEST = """ |
| 10 class A { | 10 class A { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 // Test trusting types of tear off closures. | 43 // Test trusting types of tear off closures. |
| 44 print(a.tear("42")); | 44 print(a.tear("42")); |
| 45 print(a.tear(42)); | 45 print(a.tear(42)); |
| 46 } | 46 } |
| 47 """; | 47 """; |
| 48 | 48 |
| 49 void main() { | 49 void main() { |
| 50 Uri uri = new Uri(scheme: 'source'); | 50 Uri uri = new Uri(scheme: 'source'); |
| 51 var compiler = compilerFor(TEST, uri, trustTypeAnnotations: true); | 51 var compiler = compilerFor(TEST, uri, trustTypeAnnotations: true); |
| 52 asyncTest(() => compiler.run(uri).then((_) { | 52 asyncTest(() => compiler.run(uri).then((_) { |
| 53 var typesInferrer = compiler.globalInference.typesInferrer; | 53 var typesInferrer = compiler.globalInference.typesInferrerInternal; |
| 54 | 54 |
| 55 ClassElement classA = findElement(compiler, "A"); | 55 ClassElement classA = findElement(compiler, "A"); |
| 56 | 56 |
| 57 checkReturn(String name, TypeMask type) { | 57 checkReturn(String name, TypeMask type) { |
| 58 var element = classA.lookupMember(name); | 58 var element = classA.lookupMember(name); |
| 59 var mask = typesInferrer.getReturnTypeOfElement(element); | 59 var mask = typesInferrer.getReturnTypeOfElement(element); |
| 60 Expect.isTrue(type.containsMask( | 60 Expect.isTrue(type.containsMask( |
| 61 typesInferrer.getReturnTypeOfElement(element), | 61 typesInferrer.getReturnTypeOfElement(element), |
| 62 compiler.closedWorld)); | 62 compiler.closedWorld)); |
| 63 } | 63 } |
| 64 | 64 |
| 65 checkType(String name, type) { | 65 checkType(String name, type) { |
| 66 var element = classA.lookupMember(name); | 66 var element = classA.lookupMember(name); |
| 67 Expect.isTrue(type.containsMask( | 67 Expect.isTrue(type.containsMask( |
| 68 typesInferrer.getTypeOfElement(element), compiler.closedWorld)); | 68 typesInferrer.getTypeOfElement(element), compiler.closedWorld)); |
| 69 } | 69 } |
| 70 | 70 |
| 71 var intMask = new TypeMask.subtype( | 71 var intMask = new TypeMask.subtype( |
| 72 compiler.coreClasses.intClass, compiler.closedWorld); | 72 compiler.coreClasses.intClass, compiler.closedWorld); |
| 73 | 73 |
| 74 checkReturn('foo', intMask); | 74 checkReturn('foo', intMask); |
| 75 checkReturn('faa', intMask); | 75 checkReturn('faa', intMask); |
| 76 checkType('aField', intMask); | 76 checkType('aField', intMask); |
| 77 checkReturn('bar', intMask); | 77 checkReturn('bar', intMask); |
| 78 checkReturn('baz', intMask); | 78 checkReturn('baz', intMask); |
| 79 checkReturn('tear', intMask); | 79 checkReturn('tear', intMask); |
| 80 })); | 80 })); |
| 81 } | 81 } |
| OLD | NEW |