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 // Test type promotion of parameters. | 5 // Test type promotion of parameters. |
6 | 6 |
7 class A { | 7 class A { |
8 var a = "a"; | 8 var a = "a"; |
9 } | 9 } |
| 10 |
10 class B extends A { | 11 class B extends A { |
11 var b = "b"; | 12 var b = "b"; |
12 } | 13 } |
| 14 |
13 class C extends B { | 15 class C extends B { |
14 var c = "c"; | 16 var c = "c"; |
15 } | 17 } |
| 18 |
16 class D extends A { | 19 class D extends A { |
17 var d = "d"; | 20 var d = "d"; |
18 } | 21 } |
| 22 |
19 class E implements C, D { | 23 class E implements C, D { |
20 var a = ""; | 24 var a = ""; |
21 var b = ""; | 25 var b = ""; |
22 var c = ""; | 26 var c = ""; |
23 var d = ""; | 27 var d = ""; |
24 } | 28 } |
25 | 29 |
26 void main() { | 30 void main() { |
27 test(new E()); | 31 test(new E()); |
28 } | 32 } |
| 33 |
29 void test(A a) { | 34 void test(A a) { |
30 print(a.a); | 35 print(a.a); |
31 print(a.b); //# 01: static type warning | 36 print(a.b); //# 01: static type warning |
32 print(a.c); //# 02: static type warning | 37 print(a.c); //# 02: static type warning |
33 print(a.d); //# 03: static type warning | 38 print(a.d); //# 03: static type warning |
34 | 39 |
35 if (a is B) { | 40 if (a is B) { |
36 print(a.a); | 41 print(a.a); |
37 print(a.b); | 42 print(a.b); |
38 print(a.c); //# 04: static type warning | 43 print(a.c); //# 04: static type warning |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 print(a.b); //# 16: static type warning | 90 print(a.b); //# 16: static type warning |
86 print(a.c); //# 17: static type warning | 91 print(a.c); //# 17: static type warning |
87 print(a.d); | 92 print(a.d); |
88 } | 93 } |
89 | 94 |
90 print(a.a); | 95 print(a.a); |
91 print(a.b); //# 18: static type warning | 96 print(a.b); //# 18: static type warning |
92 print(a.c); //# 19: static type warning | 97 print(a.c); //# 19: static type warning |
93 print(a.d); //# 20: static type warning | 98 print(a.d); //# 20: static type warning |
94 | 99 |
95 var o1 = a is B ? | 100 var o1 = a is B |
96 '${a.a}' | 101 ? '${a.a}' |
97 '${a.b}' | 102 '${a.b}' |
98 '${a.c}' //# 21: static type warning | 103 '${a.c}' //# 21: static type warning |
99 '${a.d}' //# 22: static type warning | 104 '${a.d}' //# 22: static type warning |
100 : | 105 : '${a.a}' |
101 '${a.a}' | |
102 '${a.b}' //# 23: static type warning | 106 '${a.b}' //# 23: static type warning |
103 '${a.c}' //# 24: static type warning | 107 '${a.c}' //# 24: static type warning |
104 '${a.d}' //# 25: static type warning | 108 '${a.d}' //# 25: static type warning |
105 ; | 109 ; |
106 | 110 |
107 var o2 = a is C ? | 111 var o2 = a is C |
108 '${a.a}' | 112 ? '${a.a}' |
109 '${a.b}' | 113 '${a.b}' |
110 '${a.c}' | 114 '${a.c}' |
111 '${a.d}' //# 26: static type warning | 115 '${a.d}' //# 26: static type warning |
112 : | 116 : '${a.a}' |
113 '${a.a}' | |
114 '${a.b}' //# 27: static type warning | 117 '${a.b}' //# 27: static type warning |
115 '${a.c}' //# 28: static type warning | 118 '${a.c}' //# 28: static type warning |
116 '${a.d}' //# 29: static type warning | 119 '${a.d}' //# 29: static type warning |
117 ; | 120 ; |
118 | 121 |
119 var o3 = a is D ? | 122 var o3 = a is D |
120 '${a.a}' | 123 ? '${a.a}' |
121 '${a.b}' //# 30: static type warning | 124 '${a.b}' //# 30: static type warning |
122 '${a.c}' //# 31: static type warning | 125 '${a.c}' //# 31: static type warning |
123 '${a.d}' | 126 '${a.d}' |
124 : | 127 : '${a.a}' |
125 '${a.a}' | |
126 '${a.b}' //# 32: static type warning | 128 '${a.b}' //# 32: static type warning |
127 '${a.c}' //# 33: static type warning | 129 '${a.c}' //# 33: static type warning |
128 '${a.d}' //# 34: static type warning | 130 '${a.d}' //# 34: static type warning |
129 ; | 131 ; |
130 | 132 |
131 if (a is B && a is B) { | 133 if (a is B && a is B) { |
132 print(a.a); | 134 print(a.a); |
133 print(a.b); | 135 print(a.b); |
134 print(a.c); //# 35: static type warning | 136 print(a.c); //# 35: static type warning |
135 print(a.d); //# 36: static type warning | 137 print(a.d); //# 36: static type warning |
(...skipping 15 matching lines...) Expand all Loading... |
151 print(a.b); | 153 print(a.b); |
152 print(a.c); | 154 print(a.c); |
153 print(a.d); //# 39: static type warning | 155 print(a.d); //# 39: static type warning |
154 } | 156 } |
155 if (a is D && a is C) { | 157 if (a is D && a is C) { |
156 print(a.a); | 158 print(a.a); |
157 print(a.b); //# 40: static type warning | 159 print(a.b); //# 40: static type warning |
158 print(a.c); //# 41: static type warning | 160 print(a.c); //# 41: static type warning |
159 print(a.d); | 161 print(a.d); |
160 } | 162 } |
161 if (a is D | 163 if (a is D && |
162 && a.a == "" | 164 a.a == "" |
163 && a.b == "" // //# 42: static type warning | 165 && a.b == "" // //# 42: static type warning |
164 && a.c == "" // //# 43: static type warning | 166 && a.c == "" // //# 43: static type warning |
165 && a.d == "") { | 167 && |
| 168 a.d == "") { |
166 print(a.a); | 169 print(a.a); |
167 print(a.b); //# 44: static type warning | 170 print(a.b); //# 44: static type warning |
168 print(a.c); //# 45: static type warning | 171 print(a.c); //# 45: static type warning |
169 print(a.d); | 172 print(a.d); |
170 } | 173 } |
171 if (a.a == "" | 174 if (a.a == "" |
172 && a.b == "" //# 46: static type warning | 175 && a.b == "" //# 46: static type warning |
173 && a.c == "" //# 47: static type warning | 176 && a.c == "" //# 47: static type warning |
174 && a.d == "" //# 48: static type warning | 177 && a.d == "" //# 48: static type warning |
175 && a is B | 178 && |
176 && a.a == "" | 179 a is B && |
177 && a.b == "" | 180 a.a == "" && |
| 181 a.b == "" |
178 && a.c == "" //# 49: static type warning | 182 && a.c == "" //# 49: static type warning |
179 && a.d == "" //# 50: static type warning | 183 && a.d == "" //# 50: static type warning |
180 && a is C | 184 && |
181 && a.a == "" | 185 a is C && |
182 && a.b == "" | 186 a.a == "" && |
183 && a.c == "" | 187 a.b == "" && |
| 188 a.c == "" |
184 && a.d == "" //# 51: static type warning | 189 && a.d == "" //# 51: static type warning |
185 ) { | 190 ) { |
186 print(a.a); | 191 print(a.a); |
187 print(a.b); | 192 print(a.b); |
188 print(a.c); | 193 print(a.c); |
189 print(a.d); //# 52: static type warning | 194 print(a.d); //# 52: static type warning |
190 } | 195 } |
191 if ((a is B)) { | 196 if ((a is B)) { |
192 print(a.a); | 197 print(a.a); |
193 print(a.b); | 198 print(a.b); |
194 print(a.c); //# 54: static type warning | 199 print(a.c); //# 54: static type warning |
195 print(a.d); //# 55: static type warning | 200 print(a.d); //# 55: static type warning |
196 } | 201 } |
197 if ((a is B && (a) is C) && a is B) { | 202 if ((a is B && (a) is C) && a is B) { |
198 print(a.a); | 203 print(a.a); |
199 print(a.b); | 204 print(a.b); |
200 print(a.c); | 205 print(a.c); |
201 print(a.d); //# 56: static type warning | 206 print(a.d); //# 56: static type warning |
202 } | 207 } |
203 } | 208 } |
OLD | NEW |