OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 /*@testedFeatures=inference*/ | 5 /*@testedFeatures=inference*/ |
6 library test; | 6 library test; |
7 | 7 |
8 typedef T Function2<S, T>(S x); | 8 typedef T Function2<S, T>(S x); |
9 | 9 |
10 void main() { | 10 void main() { |
(...skipping 14 matching lines...) Expand all Loading... |
25 null; | 25 null; |
26 Function2<int, String> l1 = /*@returnType=String*/ (/*@type=int*/ x) => | 26 Function2<int, String> l1 = /*@returnType=String*/ (/*@type=int*/ x) => |
27 "hello"; | 27 "hello"; |
28 Function2<int, String> | 28 Function2<int, String> |
29 l2 = /*info:INFERRED_TYPE_CLOSURE, error:INVALID_ASSIGNMENT*/ /*@returnT
ype=int*/ (/*@type=int*/ x) => | 29 l2 = /*info:INFERRED_TYPE_CLOSURE, error:INVALID_ASSIGNMENT*/ /*@returnT
ype=int*/ (/*@type=int*/ x) => |
30 3; | 30 3; |
31 Function2<int, String> l3 = /*@returnType=String*/ (/*@type=int*/ x) { | 31 Function2<int, String> l3 = /*@returnType=String*/ (/*@type=int*/ x) { |
32 return /*error:RETURN_OF_INVALID_TYPE*/ 3; | 32 return /*error:RETURN_OF_INVALID_TYPE*/ 3; |
33 }; | 33 }; |
34 Function2<int, String> l4 = /*@returnType=String*/ (/*@type=int*/ x) { | 34 Function2<int, String> l4 = /*@returnType=String*/ (/*@type=int*/ x) { |
35 return /*error:RETURN_OF_INVALID_TYPE*/ x; | 35 return /*error:RETURN_OF_INVALID_TYPE*/ /*@promotedType=none*/ x; |
36 }; | 36 }; |
37 } | 37 } |
38 { | 38 { |
39 Function2<int, List<String>> l0 = /*@returnType=List<String>*/ (int x) => | 39 Function2<int, List<String>> l0 = /*@returnType=List<String>*/ (int x) => |
40 null; | 40 null; |
41 Function2<int, List<String>> l1 = /*@returnType=List<String>*/ (int | 41 Function2<int, List<String>> l1 = /*@returnType=List<String>*/ (int |
42 x) => /*@typeArgs=String*/ ["hello"]; | 42 x) => /*@typeArgs=String*/ ["hello"]; |
43 Function2<int, List<String>> | 43 Function2<int, List<String>> |
44 l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=List<String>*/ (String | 44 l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=List<String>*/ (String |
45 x) => /*@typeArgs=String*/ ["hello"]; | 45 x) => /*@typeArgs=String*/ ["hello"]; |
46 Function2<int, List<String>> | 46 Function2<int, List<String>> |
47 l3 = /*@returnType=List<String>*/ (int x) => /*@typeArgs=String*/ [ | 47 l3 = /*@returnType=List<String>*/ (int x) => /*@typeArgs=String*/ [ |
48 /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3 | 48 /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3 |
49 ]; | 49 ]; |
50 Function2<int, List<String>> l4 = /*@returnType=List<String>*/ (int x) { | 50 Function2<int, List<String>> l4 = /*@returnType=List<String>*/ (int x) { |
51 return /*@typeArgs=String*/ [ | 51 return /*@typeArgs=String*/ [ |
52 /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3 | 52 /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3 |
53 ]; | 53 ]; |
54 }; | 54 }; |
55 } | 55 } |
56 { | 56 { |
57 Function2<int, int> l0 = /*@returnType=int*/ (/*@type=int*/ x) => x; | 57 Function2<int, int> |
58 Function2<int, int> l1 = /*@returnType=int*/ (/*@type=int*/ x) => x + 1; | 58 l0 = /*@returnType=int*/ (/*@type=int*/ x) => /*@promotedType=none*/ x; |
| 59 Function2<int, int> |
| 60 l1 = /*@returnType=int*/ (/*@type=int*/ x) => /*@promotedType=none*/ x + |
| 61 1; |
59 Function2<int, String> | 62 Function2<int, String> |
60 l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=int*/ (/*@type=int*/ x)
=> | 63 l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=int*/ (/*@type=int*/ x)
=> |
61 x; | 64 /*@promotedType=none*/ x; |
62 Function2<int, String> | 65 Function2<int, String> |
63 l3 = /*@returnType=String*/ (/*@type=int*/ x) => /*info:DYNAMIC_CAST, in
fo:DYNAMIC_INVOKE*/ x | 66 l3 = /*@returnType=String*/ (/*@type=int*/ x) => /*info:DYNAMIC_CAST, in
fo:DYNAMIC_INVOKE*/ /*@promotedType=none*/ x |
64 .substring(3); | 67 .substring(3); |
65 Function2<String, String> | 68 Function2<String, String> |
66 l4 = /*@returnType=String*/ (/*@type=String*/ x) => x.substring(3); | 69 l4 = /*@returnType=String*/ (/*@type=String*/ x) => /*@promotedType=none
*/ x |
| 70 .substring(3); |
67 } | 71 } |
68 } | 72 } |
OLD | NEW |