OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, 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 // Dart test program for testing the instanceof operation. | |
5 | |
6 // In the type test 'e is T', it is a run-time error if T does not denote a type | |
7 // available in the current lexical scope. | |
8 | |
9 isCheckedMode() { | |
10 try { | |
11 var i = 1; | |
12 String s = i; | |
13 return false; | |
14 } catch(var e) { | |
15 return true; | |
16 } | |
17 } | |
18 | |
19 testAll() { | |
20 { | |
21 bool got_type_error = false; | |
22 var x = null; | |
23 try { | |
24 Expect.isFalse(x is UndeclaredType); // x is null. | |
25 } catch (TypeError error) { | |
26 got_type_error = true; | |
27 } | |
28 // Type error in production mode and in checked mode. | |
29 Expect.isTrue(got_type_error); | |
30 } | |
31 { | |
32 bool got_type_error = false; | |
33 var x = 1; | |
34 try { | |
35 Expect.isFalse(x is UndeclaredType); // x is not null. | |
36 } catch (TypeError error) { | |
37 got_type_error = true; | |
38 } | |
39 // Type error in production mode and in checked mode. | |
40 Expect.isTrue(got_type_error); | |
41 } | |
42 { | |
43 bool got_type_error = false; | |
44 var x = null; | |
45 try { | |
46 Expect.isFalse(x is List<UndeclaredType>); // x is null. | |
47 } catch (TypeError error) { | |
48 got_type_error = true; | |
49 } | |
50 // Type error in checked mode only. | |
51 Expect.isTrue(got_type_error == isCheckedMode()); | |
52 } | |
53 { | |
54 bool got_type_error = false; | |
55 var x = 1; | |
56 try { | |
57 Expect.isFalse(x is List<UndeclaredType>); // x is not a List. | |
58 } catch (TypeError error) { | |
59 got_type_error = true; | |
60 } | |
61 // Type error in checked mode only. | |
62 Expect.isTrue(got_type_error == isCheckedMode()); | |
63 } | |
64 { | |
65 bool got_type_error = false; | |
66 var x = new List(); | |
67 try { | |
68 Expect.isTrue(x is List<UndeclaredType>); // x is a List<Dynamic>. | |
69 } catch (TypeError error) { | |
70 got_type_error = true; | |
71 } | |
72 // Type error in checked mode only. | |
73 Expect.isTrue(got_type_error == isCheckedMode()); | |
74 } | |
75 { | |
76 bool got_type_error = false; | |
77 var x = new List<int>(); | |
78 try { | |
79 Expect.isTrue(x is List<UndeclaredType>); // x is a List<int>. | |
80 } catch (TypeError error) { | |
81 got_type_error = true; | |
82 } | |
83 // Type error in checked mode only. | |
84 Expect.isTrue(got_type_error == isCheckedMode()); | |
85 } | |
86 } | |
87 | |
88 main() { | |
89 // Repeat type checks so that inlined tests can be tested as well. | |
90 for (int i = 0; i < 5; i++) { | |
91 testAll(); | |
92 } | |
93 } | |
OLD | NEW |