Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(829)

Side by Side Diff: tests/standalone/javascript_compatibility_errors_test.dart

Issue 1683363002: Remove support for Javascript warnings in the VM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comment Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2014, 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 // VMOptions=--warn_on_javascript_compatibility --warning_as_error --optimizatio n_counter_threshold=5
6
7 import "package:expect/expect.dart";
8
9 f(x, y) {
10 // Unoptimized and optimized code.
11 1 is double; /// 00: ok
12 if (1 is double) { x++; } /// 01: ok
13 try { 1 as double; } on CastError catch (e) { } /// 02: ok
14 try { var y = 1 as double; } on CastError catch (e) { } /// 03: ok
15 1.0 is int; /// 04: ok
16 if (1.0 is int) { x++; } /// 05: ok
17 try { 1.0 as int; } on CastError catch (e) { } /// 06: ok
18 try { var z = 1.0 as int; } on CastError catch (e) { } /// 07: ok
19
20 x is double; /// 10: ok
21 if (x is double) { } /// 11: ok
22 try { x as double; } on CastError catch (e) { } /// 12: ok
23 try { var z = x as double; } on CastError catch (e) { } /// 13: ok
24 y is int; /// 14: ok
25 if (y is int) { } /// 15: ok
26 try { y as int; } on CastError catch (e) { } /// 16: ok
27 try { var z = y as int; } on CastError catch (e) { } /// 17: ok
28
29 // It is a compile-time error if evaluation of a constant object results in
30 // an uncaught exception being thrown, a JavascriptCompatibilityError here.
31 "${1.0}"; /// 20: compile-time error
32 var z = "${1.0}"; /// 21: compile-time error
33
34 (1.0).toString(); /// 22: ok
35 var z = (1.0).toString(); /// 23: ok
36 "$y"; /// 24: ok
37 var z = "$y"; /// 25: ok
38 y.toString(); /// 26: ok
39 var z = y.toString(); /// 27: ok
40
41 var a = "yz";
42 var b = "xyz";
43 b = b.substring(1);
44 if (identical(a, b)) { } /// 28: ok
45
46 if (identical(x, y)) { } /// 29: ok
47 if (identical(y, x)) { } /// 30: ok
48
49 if (x > 10) {
50 // Optimized code.
51 x is double; /// 40: ok
52 if (x is double) { } /// 41: ok
53 try { x as double; } on CastError catch (e) { } /// 42: ok
54 try { var z = x as double; } on CastError catch (e) { } /// 43: ok
55 y is int; /// 44: ok
56 if (y is int) { } /// 45: ok
57 try { y as int; } on CastError catch (e) { } /// 46: ok
58 try { var z = y as int; } on CastError catch (e) { } /// 47: ok
59
60 "${1.0}"; /// 50: compile-time error
61 var z = "${1.0}"; /// 51: compile-time error
62
63 (1.0).toString(); /// 52: ok
64 var z = (1.0).toString(); /// 53: ok
65 "$y"; /// 54: ok
66 var z = "$y"; /// 55: ok
67 y.toString(); /// 56: ok
68 var z = y.toString(); /// 57: ok
69
70 var a = "yz";
71 var b = "xyz";
72 b = b.substring(1);
73 if (identical(a, b)) { } /// 58: ok
74
75 if (identical(x, y)) { } /// 59: ok
76 if (identical(y, x)) { } /// 60: ok
77 }
78 }
79
80 k(x, y) {
81 // Unoptimized and optimized code.
82 1.5 is double;
83 if (1.5 is double) { x++; }
84 try { 1.5 as double; } on CastError catch (e) { }
85 try { var y = 1.5 as double; } on CastError catch (e) { }
86 1.5 is int;
87 if (1.5 is int) { x++; }
88 try { 1.5 as int; } on CastError catch (e) { }
89 try { var z = 1.5 as int; } on CastError catch (e) { }
90
91 1.5 is double;
92 if (1.5 is double) { x++; }
93 try { 1.5 as double; } on CastError catch (e) { }
94 try { var y = 1.5 as double; } on CastError catch (e) { }
95 1.5 is int;
96 if (1.5 is int) { x++; }
97 try { 1.5 as int; } on CastError catch (e) { }
98 try { var z = 1.5 as int; } on CastError catch (e) { }
99
100 x is double;
101 if (x is double) { }
102 try { x as double; } on CastError catch (e) { }
103 try { var z = x as double; } on CastError catch (e) { }
104 y is int;
105 if (y is int) { }
106 try { y as int; } on CastError catch (e) { }
107 try { var z = y as int; } on CastError catch (e) { }
108
109 "${1.5}";
110 var z = "${1.5}";
111 (1.5).toString();
112 z = (1.5).toString();
113 "$y";
114 z = "$y";
115 y.toString();
116 z = y.toString();
117
118 var a = "xyz";
119 var b = "xyz";
120 b = b.substring(1);
121 if (identical(a, b)) { }
122
123 if (identical(x, y)) { }
124 if (identical(y, x)) { }
125
126 if (x > 10) {
127 // Optimized code.
128 x is double;
129 if (x is double) { }
130 try { x as double; } on CastError catch (e) { }
131 try { var z = x as double; } on CastError catch (e) { }
132 y is int;
133 if (y is int) { }
134 try { y as int; } on CastError catch (e) { }
135 try { var z = y as int; } on CastError catch (e) { }
136
137 "${1.5}";
138 var z = "${1.5}";
139 (1.5).toString();
140 z = (1.5).toString();
141 "$y";
142 z = "$y";
143 y.toString();
144 z = y.toString();
145
146 var a = "xyz";
147 var b = "xyz";
148 b = b.substring(1);
149 if (identical(a, b)) { }
150
151 if (identical(x, y)) { }
152 if (identical(y, x)) { }
153 }
154 }
155
156 g(x, y) => f(x, y); // Test inlining calls.
157 h(x, y) => g(x, y);
158
159 // We don't test for _JavascriptCompatibilityError since it's not visible.
160 // It should not be visible since it doesn't exist on dart2js.
161 bool isJavascriptCompatibilityError(e) =>
162 e is Error && "$e".contains("Javascript Compatibility Error");
163
164 main() {
165 // The warning (or error in case of --warning_as_error) is issued at
166 // most once per location.
167 var numWarnings = 0;
168 for (var i = 0; i < 20; i++) {
169 try {
170 h(i, i * 1.0);
171 } catch(e) {
172 Expect.isTrue(isJavascriptCompatibilityError(e));
173 numWarnings++;
174 }
175 }
176 Expect.equals(1, numWarnings);
177 // No warnings (errors) should be issued after this point.
178 for (var i = 0; i < 20; i++) {
179 k(i * 1.0, i);
180 k(i * 1.0, i + 0.5);
181 }
182 }
183
OLDNEW
« no previous file with comments | « runtime/vm/vm_sources.gypi ('k') | tests/standalone/javascript_compatibility_warnings_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698