| 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 |