Index: tests/compiler/dart2js_extra/string_interpolation_opt1_test.dart |
diff --git a/tests/compiler/dart2js_extra/string_interpolation_opt1_test.dart b/tests/compiler/dart2js_extra/string_interpolation_opt1_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..329d6330b4115e44b9fbdbb1ce9132e38e0f2bf7 |
--- /dev/null |
+++ b/tests/compiler/dart2js_extra/string_interpolation_opt1_test.dart |
@@ -0,0 +1,56 @@ |
+// 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. |
+ |
+import "package:expect/expect.dart"; |
+import 'dart:math'; |
+ |
+// Test that String interpolation works in some optimized cases. |
+ |
+bool get inscrutableFalse => new Random().nextDouble() > 2; |
+ |
+returnsNullOrString(x) { |
+ if (inscrutableFalse) return 'hi'; |
+ if (inscrutableFalse) return null; |
+ return x; |
+} |
+ |
+returnsNullOrInt(x) { |
+ if (inscrutableFalse) return 123; |
+ if (inscrutableFalse) return null; |
+ return x; |
+} |
+ |
+spoil(a) { |
+ a[3] = 123; |
+ a[4] = 'ddd'; |
+} |
+ |
+void testString() { |
+ var a = new List(100); // 'null' values in here are JavaScript undefined. |
+ spoil(a); |
+ var s = returnsNullOrString('hi'); |
+ var x = a[2]; |
+ if (x == null) { |
+ s = returnsNullOrString(x); |
+ } |
+ |
+ Expect.equals('s: null', 's: $s'); |
+} |
+ |
+void testInt() { |
+ var a = new List(100); // 'null' values in here are JavaScript undefined. |
+ spoil(a); |
+ var s = returnsNullOrInt(123); |
+ var x = a[2]; |
+ if (x == null) { |
+ s = returnsNullOrInt(x); |
+ } |
+ |
+ Expect.equals('s: null', 's: $s'); |
+} |
+ |
+void main() { |
+ testInt(); |
+ testString(); |
+} |