Index: tests/standalone/javascript_compatibility_warnings_test.dart |
=================================================================== |
--- tests/standalone/javascript_compatibility_warnings_test.dart (revision 0) |
+++ tests/standalone/javascript_compatibility_warnings_test.dart (revision 0) |
@@ -0,0 +1,68 @@ |
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+// VMOptions=--warn_on_javascript_compatibility --no_warning_as_error --optimization_counter_threshold=5 |
+ |
+import "package:expect/expect.dart"; |
+ |
+f(x, y) { |
+ // Unoptimized code. |
+ 1 is double; /// 00: ok |
+ if (1 is double) { x++; } /// 01: ok |
+ try { 1 as double; } on CastError catch (e) { } /// 02: ok |
+ try { var y = 1 as double; } on CastError catch (e) { } /// 03: ok |
+ 1.0 is int; /// 04: ok |
+ if (1.0 is int) { x++; } /// 05: ok |
+ try { 1.0 as int; } on CastError catch (e) { } /// 06: ok |
+ try { var z = 1.0 as int; } on CastError catch (e) { } /// 07: ok |
+ |
+ x is double; /// 10: ok |
+ if (x is double) { } /// 11: ok |
+ try { x as double; } on CastError catch (e) { } /// 12: ok |
+ try { var z = x as double; } on CastError catch (e) { } /// 13: ok |
+ y is int; /// 14: ok |
+ if (y is int) { } /// 15: ok |
+ try { y as int; } on CastError catch (e) { } /// 16: ok |
+ try { var z = y as int; } on CastError catch (e) { } /// 17: ok |
+ |
+ "${1.0}"; /// 20: ok |
+ var z = "${1.0}"; /// 21: ok |
+ (1.0).toString(); /// 22: ok |
+ var z = (1.0).toString(); /// 23: ok |
+ "$y"; /// 24: ok |
+ var z = "$y"; /// 25: ok |
+ y.toString(); /// 26: ok |
+ var z = y.toString(); /// 27: ok |
+ |
+ if (x > 10) { |
+ // Optimized code. |
+ x is double; /// 30: ok |
+ if (x is double) { } /// 31: ok |
+ try { x as double; } on CastError catch (e) { } /// 32: ok |
+ try { var z = x as double; } on CastError catch (e) { } /// 33: ok |
+ y is int; /// 34: ok |
+ if (y is int) { } /// 35: ok |
+ try { y as int; } on CastError catch (e) { } /// 36: ok |
+ try { var z = y as int; } on CastError catch (e) { } /// 37: ok |
+ |
+ "${1.0}"; /// 40: ok |
+ var z = "${1.0}"; /// 41: ok |
+ (1.0).toString(); /// 42: ok |
+ var z = (1.0).toString(); /// 43: ok |
+ "$y"; /// 44: ok |
+ var z = "$y"; /// 45: ok |
+ y.toString(); /// 46: ok |
+ var z = y.toString(); /// 47: ok |
+ } |
+} |
+ |
+g(x, y) => f(x, y); // Test inlining calls. |
+h(x, y) => g(x, y); |
+ |
+main() { |
+ for (var i = 0; i < 20; i++) { |
+ h(i, i* 1.0); |
+ } |
+} |
+ |