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 // Dart test program to test check that we don't fail to compile when an | 5 // Dart test program to test check that we don't fail to compile when an |
6 // inlinable method contains a throw. | 6 // inlinable method contains a throw. |
7 | 7 |
8 import 'package:expect/expect.dart'; | 8 import 'package:expect/expect.dart'; |
9 | 9 |
10 var x = false; | 10 var x = false; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 | 45 |
46 kast(x) { | 46 kast(x) { |
47 throw x; | 47 throw x; |
48 } | 48 } |
49 | 49 |
50 ternary(a, b, c) { | 50 ternary(a, b, c) { |
51 if (x == 2) throw "ternary"; | 51 if (x == 2) throw "ternary"; |
52 } | 52 } |
53 | 53 |
54 hest() => kast("hest"); | 54 hest() => kast("hest"); |
55 hest2() { return kast("hest2"); } | 55 hest2() { |
| 56 return kast("hest2"); |
| 57 } |
| 58 |
56 foo() => true || kast("foo"); | 59 foo() => true || kast("foo"); |
57 bar() => false || kast("foo"); | 60 bar() => false || kast("foo"); |
58 barc() => callMeTrue() || kast("foo"); | 61 barc() => callMeTrue() || kast("foo"); |
59 barCallThrow() => callMeFalse() || kast("foo"); | 62 barCallThrow() => callMeFalse() || kast("foo"); |
60 baz(x) => x ? kast("baz") : 0; | 63 baz(x) => x ? kast("baz") : 0; |
61 bazc() => callMeFalse() ? kast("baz") : 0; | 64 bazc() => callMeFalse() ? kast("baz") : 0; |
62 bazCallThrow() => callMeTrue() ? kast("baz") : 0; | 65 bazCallThrow() => callMeTrue() ? kast("baz") : 0; |
63 fizz(x) => x ? 0 : kast("baz"); | 66 fizz(x) => x ? 0 : kast("baz"); |
64 fizzc() => callMeTrue() ? 0 : kast("baz"); | 67 fizzc() => callMeTrue() ? 0 : kast("baz"); |
65 fizzCallThrow() => callMeFalse() ? 0 : kast("baz"); | 68 fizzCallThrow() => callMeFalse() ? 0 : kast("baz"); |
66 fuzz() => kast("baz") ? 0 : 1; | 69 fuzz() => kast("baz") ? 0 : 1; |
67 farce() => !kast("baz"); | 70 farce() => !kast("baz"); |
68 unary() => ~(kast("baz")); | 71 unary() => ~(kast("baz")); |
69 boo() { | 72 boo() { |
70 callMe(); | 73 callMe(); |
71 x = kast("boo"); | 74 x = kast("boo"); |
72 } | 75 } |
| 76 |
73 yo() { | 77 yo() { |
74 throw kast("yo"); | 78 throw kast("yo"); |
75 } | 79 } |
| 80 |
76 bin() { | 81 bin() { |
77 return 5 * kast("bin"); | 82 return 5 * kast("bin"); |
78 } | 83 } |
| 84 |
79 binCallThrow() { | 85 binCallThrow() { |
80 return callMe() * kast("binct"); | 86 return callMe() * kast("binct"); |
81 } | 87 } |
| 88 |
82 hoo() { | 89 hoo() { |
83 x[kast("hoo")] = 0; | 90 x[kast("hoo")] = 0; |
84 x[kast("hoo")]; | 91 x[kast("hoo")]; |
85 kast("hoo").x = 0; | 92 kast("hoo").x = 0; |
86 kast("hoo").x; | 93 kast("hoo").x; |
87 } | 94 } |
88 | 95 |
89 switcheroo() { | 96 switcheroo() { |
90 switch (kast("switcheroo")) { | 97 switch (kast("switcheroo")) { |
91 case 0: | 98 case 0: |
92 boo(); | 99 boo(); |
93 } | 100 } |
94 } | 101 } |
95 | 102 |
96 class ThrowConstructor { | 103 class ThrowConstructor { |
97 ThrowConstructor() : | 104 ThrowConstructor() |
98 foo = callMeTrue(), | 105 : foo = callMeTrue(), |
99 bar = kast("ThrowConstructor") { | 106 bar = kast("ThrowConstructor") { |
100 called = false; | 107 called = false; |
101 } | 108 } |
102 | 109 |
103 bool foo; | 110 bool foo; |
104 var bar; | 111 var bar; |
105 } | 112 } |
106 | 113 |
107 throwConstructor() { | 114 throwConstructor() { |
108 called = false; | 115 called = false; |
109 return new ThrowConstructor(); | 116 return new ThrowConstructor(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 print(x); | 155 print(x); |
149 } | 156 } |
150 | 157 |
151 dovileBreak() { | 158 dovileBreak() { |
152 var x = 0; | 159 var x = 0; |
153 do { | 160 do { |
154 callMe(); | 161 callMe(); |
155 x = 1; | 162 x = 1; |
156 break; | 163 break; |
157 } while (kast("vile")); | 164 } while (kast("vile")); |
158 return(x); | 165 return (x); |
159 } | 166 } |
160 | 167 |
161 dovileContinue() { | 168 dovileContinue() { |
162 var x = 0; | 169 var x = 0; |
163 do { | 170 do { |
164 callMe(); | 171 callMe(); |
165 x = 1; | 172 x = 1; |
166 continue; | 173 continue; |
167 } while (kast("vile")); | 174 } while (kast("vile")); |
168 return(x); | 175 return (x); |
169 } | 176 } |
170 | 177 |
171 dovileBreakContinue(x) { | 178 dovileBreakContinue(x) { |
172 do { | 179 do { |
173 callMe(); | 180 callMe(); |
174 if (x == 1) break; | 181 if (x == 1) break; |
175 continue; | 182 continue; |
176 } while (kast("vile")); | 183 } while (kast("vile")); |
177 return(x); | 184 return (x); |
178 } | 185 } |
179 | 186 |
180 faar1() { | 187 faar1() { |
181 callMe(); | 188 callMe(); |
182 for (kast("faar"); called = false; called = false) { | 189 for (kast("faar"); called = false; called = false) { |
183 called = false; | 190 called = false; |
184 } | 191 } |
185 } | 192 } |
186 | 193 |
187 faar2() { | 194 faar2() { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 testCallThenThrow(faar1); | 294 testCallThenThrow(faar1); |
288 testCallThenThrow(faar2); | 295 testCallThenThrow(faar2); |
289 testCallThenThrow(faar3); | 296 testCallThenThrow(faar3); |
290 testCallThenThrow(faar4); | 297 testCallThenThrow(faar4); |
291 testCallThenThrow(faar5); | 298 testCallThenThrow(faar5); |
292 testCallThenThrow(faar6); | 299 testCallThenThrow(faar6); |
293 testCallThenThrow(faar7); | 300 testCallThenThrow(faar7); |
294 testCallThenThrow(faar8); | 301 testCallThenThrow(faar8); |
295 testCall(faar9); | 302 testCall(faar9); |
296 } | 303 } |
OLD | NEW |