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 locals. | 5 // Test type promotion of locals. |
6 | 6 |
7 class A { | 7 class A { |
8 var a = "a"; | 8 var a = "a"; |
9 } | 9 } |
10 class B extends A { | 10 class B extends A { |
11 var b = "b"; | 11 var b = "b"; |
12 } | 12 } |
13 class C extends B { | 13 class C extends B { |
14 var c = "c"; | 14 var c = "c"; |
15 } | 15 } |
16 class D extends A { | 16 class D extends A { |
17 var d = "d"; | 17 var d = "d"; |
18 } | 18 } |
19 class E implements C, D { | 19 class E implements C, D { |
20 var a = ""; | 20 var a = ""; |
21 var b = ""; | 21 var b = ""; |
22 var c = ""; | 22 var c = ""; |
23 var d = ""; | 23 var d = ""; |
24 } | 24 } |
25 | 25 |
26 void main() { | 26 void main() { |
27 A a = new E(); | 27 A a = new E(); |
28 print(a.a); | 28 print(a.a); |
29 print(a.b); /// 01: static type warning | 29 print(a.b); //# 01: static type warning |
30 print(a.c); /// 02: static type warning | 30 print(a.c); //# 02: static type warning |
31 print(a.d); /// 03: static type warning | 31 print(a.d); //# 03: static type warning |
32 | 32 |
33 if (a is B) { | 33 if (a is B) { |
34 print(a.a); | 34 print(a.a); |
35 print(a.b); | 35 print(a.b); |
36 print(a.c); /// 04: static type warning | 36 print(a.c); //# 04: static type warning |
37 print(a.d); /// 05: static type warning | 37 print(a.d); //# 05: static type warning |
38 | 38 |
39 if (a is C) { | 39 if (a is C) { |
40 print(a.a); | 40 print(a.a); |
41 print(a.b); | 41 print(a.b); |
42 print(a.c); | 42 print(a.c); |
43 print(a.d); /// 06: static type warning | 43 print(a.d); //# 06: static type warning |
44 } | 44 } |
45 | 45 |
46 print(a.a); | 46 print(a.a); |
47 print(a.b); | 47 print(a.b); |
48 print(a.c); /// 07: static type warning | 48 print(a.c); //# 07: static type warning |
49 print(a.d); /// 08: static type warning | 49 print(a.d); //# 08: static type warning |
50 } | 50 } |
51 if (a is C) { | 51 if (a is C) { |
52 print(a.a); | 52 print(a.a); |
53 print(a.b); | 53 print(a.b); |
54 print(a.c); | 54 print(a.c); |
55 print(a.d); /// 09: static type warning | 55 print(a.d); //# 09: static type warning |
56 | 56 |
57 if (a is B) { | 57 if (a is B) { |
58 print(a.a); | 58 print(a.a); |
59 print(a.b); | 59 print(a.b); |
60 print(a.c); | 60 print(a.c); |
61 print(a.d); /// 10: static type warning | 61 print(a.d); //# 10: static type warning |
62 } | 62 } |
63 if (a is D) { | 63 if (a is D) { |
64 print(a.a); | 64 print(a.a); |
65 print(a.b); | 65 print(a.b); |
66 print(a.c); | 66 print(a.c); |
67 print(a.d); /// 11: static type warning | 67 print(a.d); //# 11: static type warning |
68 } | 68 } |
69 | 69 |
70 print(a.a); | 70 print(a.a); |
71 print(a.b); | 71 print(a.b); |
72 print(a.c); | 72 print(a.c); |
73 print(a.d); /// 12: static type warning | 73 print(a.d); //# 12: static type warning |
74 } | 74 } |
75 | 75 |
76 print(a.a); | 76 print(a.a); |
77 print(a.b); /// 13: static type warning | 77 print(a.b); //# 13: static type warning |
78 print(a.c); /// 14: static type warning | 78 print(a.c); //# 14: static type warning |
79 print(a.d); /// 15: static type warning | 79 print(a.d); //# 15: static type warning |
80 | 80 |
81 if (a is D) { | 81 if (a is D) { |
82 print(a.a); | 82 print(a.a); |
83 print(a.b); /// 16: static type warning | 83 print(a.b); //# 16: static type warning |
84 print(a.c); /// 17: static type warning | 84 print(a.c); //# 17: static type warning |
85 print(a.d); | 85 print(a.d); |
86 } | 86 } |
87 | 87 |
88 print(a.a); | 88 print(a.a); |
89 print(a.b); /// 18: static type warning | 89 print(a.b); //# 18: static type warning |
90 print(a.c); /// 19: static type warning | 90 print(a.c); //# 19: static type warning |
91 print(a.d); /// 20: static type warning | 91 print(a.d); //# 20: static type warning |
92 | 92 |
93 var o1 = a is B ? | 93 var o1 = a is B ? |
94 '${a.a}' | 94 '${a.a}' |
95 '${a.b}' | 95 '${a.b}' |
96 '${a.c}' /// 21: static type warning | 96 '${a.c}' //# 21: static type warning |
97 '${a.d}' /// 22: static type warning | 97 '${a.d}' //# 22: static type warning |
98 : | 98 : |
99 '${a.a}' | 99 '${a.a}' |
100 '${a.b}' /// 23: static type warning | 100 '${a.b}' //# 23: static type warning |
101 '${a.c}' /// 24: static type warning | 101 '${a.c}' //# 24: static type warning |
102 '${a.d}' /// 25: static type warning | 102 '${a.d}' //# 25: static type warning |
103 ; | 103 ; |
104 | 104 |
105 var o2 = a is C ? | 105 var o2 = a is C ? |
106 '${a.a}' | 106 '${a.a}' |
107 '${a.b}' | 107 '${a.b}' |
108 '${a.c}' | 108 '${a.c}' |
109 '${a.d}' /// 26: static type warning | 109 '${a.d}' //# 26: static type warning |
110 : | 110 : |
111 '${a.a}' | 111 '${a.a}' |
112 '${a.b}' /// 27: static type warning | 112 '${a.b}' //# 27: static type warning |
113 '${a.c}' /// 28: static type warning | 113 '${a.c}' //# 28: static type warning |
114 '${a.d}' /// 29: static type warning | 114 '${a.d}' //# 29: static type warning |
115 ; | 115 ; |
116 | 116 |
117 var o3 = a is D ? | 117 var o3 = a is D ? |
118 '${a.a}' | 118 '${a.a}' |
119 '${a.b}' /// 30: static type warning | 119 '${a.b}' //# 30: static type warning |
120 '${a.c}' /// 31: static type warning | 120 '${a.c}' //# 31: static type warning |
121 '${a.d}' | 121 '${a.d}' |
122 : | 122 : |
123 '${a.a}' | 123 '${a.a}' |
124 '${a.b}' /// 32: static type warning | 124 '${a.b}' //# 32: static type warning |
125 '${a.c}' /// 33: static type warning | 125 '${a.c}' //# 33: static type warning |
126 '${a.d}' /// 34: static type warning | 126 '${a.d}' //# 34: static type warning |
127 ; | 127 ; |
128 | 128 |
129 if (a is B && a is B) { | 129 if (a is B && a is B) { |
130 print(a.a); | 130 print(a.a); |
131 print(a.b); | 131 print(a.b); |
132 print(a.c); /// 35: static type warning | 132 print(a.c); //# 35: static type warning |
133 print(a.d); /// 36: static type warning | 133 print(a.d); //# 36: static type warning |
134 } | 134 } |
135 if (a is B && a is C) { | 135 if (a is B && a is C) { |
136 print(a.a); | 136 print(a.a); |
137 print(a.b); | 137 print(a.b); |
138 print(a.c); | 138 print(a.c); |
139 print(a.d); /// 37: static type warning | 139 print(a.d); //# 37: static type warning |
140 } | 140 } |
141 if (a is C && a is B) { | 141 if (a is C && a is B) { |
142 print(a.a); | 142 print(a.a); |
143 print(a.b); | 143 print(a.b); |
144 print(a.c); | 144 print(a.c); |
145 print(a.d); /// 38: static type warning | 145 print(a.d); //# 38: static type warning |
146 } | 146 } |
147 if (a is C && a is D) { | 147 if (a is C && a is D) { |
148 print(a.a); | 148 print(a.a); |
149 print(a.b); | 149 print(a.b); |
150 print(a.c); | 150 print(a.c); |
151 print(a.d); /// 39: static type warning | 151 print(a.d); //# 39: static type warning |
152 } | 152 } |
153 if (a is D && a is C) { | 153 if (a is D && a is C) { |
154 print(a.a); | 154 print(a.a); |
155 print(a.b); /// 40: static type warning | 155 print(a.b); //# 40: static type warning |
156 print(a.c); /// 41: static type warning | 156 print(a.c); //# 41: static type warning |
157 print(a.d); | 157 print(a.d); |
158 } | 158 } |
159 } | 159 } |
OLD | NEW |