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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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.typesInferrerInternal; | 53 var typesInferrer = compiler.globalInference.typesInferrerInternal; |
54 var closedWorld = typesInferrer.closedWorld; | 54 var closedWorld = typesInferrer.closedWorld; |
55 | 55 |
56 ClassElement classA = findElement(compiler, "A"); | 56 ClassElement classA = findElement(compiler, "A"); |
57 | 57 |
58 checkReturn(String name, TypeMask type) { | 58 checkReturn(String name, TypeMask type) { |
59 var element = classA.lookupMember(name); | 59 var element = classA.lookupMember(name); |
60 var mask = typesInferrer.getReturnTypeOfElement(element); | 60 var mask = typesInferrer.getReturnTypeOfElement(element); |
61 Expect.isTrue(type.containsMask( | 61 Expect.isTrue(type.containsMask(mask, closedWorld)); |
62 typesInferrer.getReturnTypeOfElement(element), closedWorld)); | |
63 } | 62 } |
64 | 63 |
65 checkType(String name, type) { | 64 checkType(String name, type) { |
66 var element = classA.lookupMember(name); | 65 var element = classA.lookupMember(name); |
67 Expect.isTrue(type.containsMask( | 66 Expect.isTrue(type.containsMask( |
68 typesInferrer.getTypeOfElement(element), closedWorld)); | 67 typesInferrer.getTypeOfElement(element), closedWorld)); |
69 } | 68 } |
70 | 69 |
71 var intMask = new TypeMask.subtype( | 70 var intMask = new TypeMask.subtype( |
72 closedWorld.commonElements.intClass, closedWorld); | 71 closedWorld.commonElements.intClass, closedWorld); |
73 | 72 |
74 checkReturn('foo', intMask); | 73 checkReturn('foo', intMask); |
75 checkReturn('faa', intMask); | 74 checkReturn('faa', intMask); |
76 checkType('aField', intMask); | 75 checkType('aField', intMask); |
77 checkReturn('bar', intMask); | 76 checkReturn('bar', intMask); |
78 checkReturn('baz', intMask); | 77 checkReturn('baz', intMask); |
79 checkReturn('tear', intMask); | 78 checkReturn('tear', intMask); |
80 })); | 79 })); |
81 } | 80 } |
OLD | NEW |