| // 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 => 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 = []..length = 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 = []..length = 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(); | |
| } |