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:async_helper/async_helper.dart'; | 5 import 'package:async_helper/async_helper.dart'; |
6 import 'package:expect/expect.dart'; | 6 import 'package:expect/expect.dart'; |
7 | 7 |
8 import 'compiler_helper.dart'; | 8 import 'compiler_helper.dart'; |
9 import 'type_mask_test_helper.dart'; | 9 import 'type_mask_test_helper.dart'; |
10 | 10 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 ..returnDynamic2() | 59 ..returnDynamic2() |
60 ..returnDynamic3() | 60 ..returnDynamic3() |
61 ..returnDynamic4(); | 61 ..returnDynamic4(); |
62 } | 62 } |
63 """; | 63 """; |
64 | 64 |
65 void main() { | 65 void main() { |
66 Uri uri = new Uri(scheme: 'source'); | 66 Uri uri = new Uri(scheme: 'source'); |
67 var compiler = compilerFor(TEST, uri); | 67 var compiler = compilerFor(TEST, uri); |
68 asyncTest(() => compiler.run(uri).then((_) { | 68 asyncTest(() => compiler.run(uri).then((_) { |
69 var commonMasks = compiler.commonMasks; | 69 var commonMasks = compiler.commonMasks; |
70 var typesInferrer = compiler.globalInference.typesInferrer; | 70 var typesInferrer = compiler.globalInference.typesInferrer; |
71 | 71 |
72 checkReturnInClass(String className, String methodName, type) { | 72 checkReturnInClass(String className, String methodName, type) { |
73 var cls = findElement(compiler, className); | 73 var cls = findElement(compiler, className); |
74 var element = cls.lookupLocalMember(methodName); | 74 var element = cls.lookupLocalMember(methodName); |
75 Expect.equals(type, | 75 Expect.equals( |
76 simplify(typesInferrer.getReturnTypeOfElement(element), compiler), | 76 type, |
77 methodName); | 77 simplify(typesInferrer.getReturnTypeOfElement(element), compiler), |
78 } | 78 methodName); |
| 79 } |
79 | 80 |
80 var subclassOfInterceptor = | 81 var subclassOfInterceptor = |
81 findTypeMask(compiler, 'Interceptor', 'nonNullSubclass'); | 82 findTypeMask(compiler, 'Interceptor', 'nonNullSubclass'); |
82 | 83 |
83 checkReturnInClass('A', 'returnNum1', commonMasks.numType); | 84 checkReturnInClass('A', 'returnNum1', commonMasks.numType); |
84 checkReturnInClass('A', 'returnNum2', commonMasks.numType); | 85 checkReturnInClass('A', 'returnNum2', commonMasks.numType); |
85 checkReturnInClass('A', 'returnNum3', commonMasks.numType); | 86 checkReturnInClass('A', 'returnNum3', commonMasks.numType); |
86 checkReturnInClass('A', 'returnNum4', commonMasks.numType); | 87 checkReturnInClass('A', 'returnNum4', commonMasks.numType); |
87 checkReturnInClass('A', 'returnEmpty1', const TypeMask.nonNullEmpty()); | 88 checkReturnInClass('A', 'returnEmpty1', const TypeMask.nonNullEmpty()); |
88 checkReturnInClass('A', 'returnEmpty2', const TypeMask.nonNullEmpty()); | 89 checkReturnInClass('A', 'returnEmpty2', const TypeMask.nonNullEmpty()); |
89 checkReturnInClass('A', 'returnDynamic1', subclassOfInterceptor); | 90 checkReturnInClass('A', 'returnDynamic1', subclassOfInterceptor); |
90 checkReturnInClass('A', 'returnDynamic2', subclassOfInterceptor); | 91 checkReturnInClass('A', 'returnDynamic2', subclassOfInterceptor); |
91 checkReturnInClass('A', 'returnEmpty3', const TypeMask.nonNullEmpty()); | 92 checkReturnInClass('A', 'returnEmpty3', const TypeMask.nonNullEmpty()); |
92 | 93 |
93 checkReturnInClass('B', 'returnString1', commonMasks.stringType); | 94 checkReturnInClass('B', 'returnString1', commonMasks.stringType); |
94 checkReturnInClass('B', 'returnString2', commonMasks.stringType); | 95 checkReturnInClass('B', 'returnString2', commonMasks.stringType); |
95 checkReturnInClass('B', 'returnDynamic1', const TypeMask.nonNullEmpty()); | 96 checkReturnInClass( |
96 checkReturnInClass('B', 'returnDynamic2', const TypeMask.nonNullEmpty()); | 97 'B', 'returnDynamic1', const TypeMask.nonNullEmpty()); |
97 checkReturnInClass('B', 'returnDynamic3', const TypeMask.nonNullEmpty()); | 98 checkReturnInClass( |
98 checkReturnInClass('B', 'returnDynamic4', const TypeMask.nonNullEmpty()); | 99 'B', 'returnDynamic2', const TypeMask.nonNullEmpty()); |
99 })); | 100 checkReturnInClass( |
| 101 'B', 'returnDynamic3', const TypeMask.nonNullEmpty()); |
| 102 checkReturnInClass( |
| 103 'B', 'returnDynamic4', const TypeMask.nonNullEmpty()); |
| 104 })); |
100 } | 105 } |
OLD | NEW |