Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 // Dart test program to test check that we don't fail to compile when an | |
|
ngeoffray
2013/04/07 09:48:50
test check -> check
| |
| 6 // inlinable method contains a throw. | |
| 7 | |
| 8 var x = false; | |
| 9 | |
| 10 bool called; | |
| 11 | |
| 12 bool callMeTrue() { | |
| 13 called = true; | |
| 14 return true; | |
| 15 } | |
| 16 | |
| 17 bool callMeFalse() { | |
| 18 called = true; | |
| 19 return false; | |
| 20 } | |
| 21 | |
| 22 void callMe() { | |
| 23 called = true; | |
| 24 } | |
| 25 | |
| 26 testCallThenThrow(fn) { | |
| 27 called = false; | |
| 28 Expect.throws(() => fn()); | |
| 29 Expect.isTrue(called); | |
| 30 } | |
| 31 | |
| 32 testCall(fn) { | |
| 33 called = false; | |
| 34 fn(); | |
| 35 Expect.isTrue(called); | |
| 36 } | |
| 37 | |
| 38 testNoThrow(fn) { | |
| 39 called = false; | |
| 40 Expect.throws(() => fn()); | |
| 41 Expect.isFalse(called); | |
| 42 } | |
| 43 | |
| 44 kast(x) { | |
| 45 throw x; | |
| 46 } | |
| 47 | |
| 48 ternary(a, b, c) { | |
| 49 if (x == 2) throw "ternary"; | |
| 50 } | |
| 51 | |
| 52 hest() => kast("hest"); | |
| 53 hest2() { return kast("hest2"); } | |
| 54 foo() => true || kast("foo"); | |
| 55 bar() => false || kast("foo"); | |
| 56 barc() => callMeTrue() || kast("foo"); | |
| 57 barCallThrow() => callMeFalse() || kast("foo"); | |
| 58 baz(x) => x ? kast("baz") : 0; | |
| 59 bazc() => callMeFalse() ? kast("baz") : 0; | |
| 60 bazCallThrow() => callMeTrue() ? kast("baz") : 0; | |
| 61 fizz(x) => x ? 0 : kast("baz"); | |
| 62 fizzc() => callMeTrue() ? 0 : kast("baz"); | |
| 63 fizzCallThrow() => callMeFalse() ? 0 : kast("baz"); | |
| 64 fuzz() => kast("baz") ? 0 : 1; | |
| 65 farce() => !kast("baz"); | |
| 66 unary() => ~(kast("baz")); | |
| 67 boo() { | |
| 68 callMe(); | |
| 69 x = kast("boo"); | |
| 70 } | |
| 71 yo() { | |
| 72 throw kast("yo"); | |
| 73 } | |
| 74 hoo() { | |
| 75 x[kast("hoo")] = 0; | |
| 76 x[kast("hoo")]; | |
| 77 kast("hoo").x = 0; | |
| 78 kast("hoo").x; | |
| 79 } | |
| 80 | |
| 81 switcheroo(x) { | |
| 82 switch (kast("switcheroo")) { | |
| 83 case 0: | |
| 84 boo(); | |
| 85 } | |
| 86 } | |
| 87 switchertoo(x) { | |
| 88 switch (kast("switcheroo")) { | |
| 89 case boo(): | |
| 90 foo(); | |
| 91 } | |
| 92 } | |
| 93 | |
| 94 switchenoo(x) { | |
| 95 switch (x) { | |
| 96 case callMeTrue(): | |
| 97 break; | |
| 98 case kast("switchenoo"): | |
| 99 break; | |
| 100 case 42: | |
| 101 return 42; | |
| 102 } | |
| 103 } | |
| 104 | |
| 105 interpole() => "inter${kast('tada!')}pole"; | |
| 106 interpoleCallThrow() => "inter${callMeTrue()}...${kast('tada!')}pole"; | |
| 107 | |
| 108 call1() => ternary(0, kast("call1"), 1); | |
| 109 call2() => ternary(kast("call2"), 0, 1); | |
| 110 call3() => ternary(0, 1, kast("call3")); | |
| 111 call1c() => ternary(callMe(), kast("call1"), 1); | |
| 112 call3c() => ternary(callMeTrue(), 1, kast("call3")); | |
| 113 call4c() => ternary(0, callMeTrue(), kast("call3")); | |
| 114 | |
| 115 sendSet() { | |
| 116 var x = kast("sendSet"); | |
| 117 } | |
| 118 | |
| 119 sendSetCallThrow() { | |
| 120 var x = callMe(), y = kast("sendSet"); | |
| 121 } | |
| 122 | |
| 123 isSend() => kast("isSend") is int; | |
| 124 | |
| 125 vile() { | |
| 126 while (kast("vile")) { | |
| 127 callMe(); | |
| 128 } | |
| 129 } | |
| 130 | |
| 131 dovile() { | |
| 132 var x = 0; | |
| 133 do { | |
| 134 callMe(); | |
| 135 x = 1; | |
| 136 } while (kast("vile")); | |
| 137 print(x); | |
| 138 } | |
| 139 | |
| 140 dovileBreak() { | |
| 141 var x = 0; | |
| 142 do { | |
| 143 callMe(); | |
| 144 x = 1; | |
| 145 break; | |
| 146 } while (kast("vile")); | |
| 147 return(x); | |
| 148 } | |
| 149 | |
| 150 dovileContinue() { | |
| 151 var x = 0; | |
| 152 do { | |
| 153 callMe(); | |
| 154 x = 1; | |
| 155 continue; | |
| 156 } while (kast("vile")); | |
| 157 return(x); | |
| 158 } | |
| 159 | |
| 160 main() { | |
| 161 Expect.throws(hest); | |
| 162 Expect.throws(hest2); | |
| 163 foo(); | |
| 164 Expect.throws(bar); | |
| 165 testCall(barc); | |
| 166 testCallThenThrow(barCallThrow); | |
| 167 Expect.equals(0, baz(false)); | |
| 168 Expect.throws(() => baz(true)); | |
| 169 testCall(bazc); | |
| 170 testCallThenThrow(bazCallThrow); | |
| 171 Expect.throws(() => fizz(false)); | |
| 172 testCall(fizzc); | |
| 173 testCallThenThrow(fizzCallThrow); | |
| 174 Expect.throws(fuzz); | |
| 175 Expect.throws(farce); | |
| 176 Expect.throws(unary); | |
| 177 testCallThenThrow(boo); | |
| 178 Expect.throws(yo); | |
| 179 Expect.throws(hoo); | |
| 180 Expect.throws(switcheroo); | |
| 181 Expect.throws(switchertoo); | |
| 182 testCallThenThrow(() => switchenoo(false)); | |
| 183 switchenoo(true); | |
| 184 testCall(() { try { switchenoo(x); } catch(e) { } }); | |
| 185 Expect.throws(interpole); | |
| 186 testCallThenThrow(interpoleCallThrow); | |
| 187 Expect.throws(call1); | |
| 188 Expect.throws(call2); | |
| 189 Expect.throws(call3); | |
| 190 testCallThenThrow(call1c); | |
| 191 testCallThenThrow(call3c); | |
| 192 testCallThenThrow(call4c); | |
| 193 Expect.throws(sendSet); | |
| 194 testCallThenThrow(sendSetCallThrow); | |
| 195 Expect.throws(isSend); | |
| 196 testNoThrow(vile); | |
| 197 testCallThenThrow(dovile); | |
| 198 testCall(dovileBreak); | |
| 199 testCallThenThrow(dovileContinue); | |
| 200 } | |
| OLD | NEW |