Chromium Code Reviews| Index: tests/compiler/dart2js_extra/constant_javascript_semantics_test.dart |
| diff --git a/tests/compiler/dart2js_extra/constant_javascript_semantics_test.dart b/tests/compiler/dart2js_extra/constant_javascript_semantics_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e27e7bf6a65dd3ecfdb9aad42011ebdd6a2d1e06 |
| --- /dev/null |
| +++ b/tests/compiler/dart2js_extra/constant_javascript_semantics_test.dart |
| @@ -0,0 +1,35 @@ |
| +// Copyright (c) 2012, 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. |
| + |
| +// Make sure we use JavaScript semantics when compiling compile-time constants. |
| + |
| +const x = 12345678901234567891; |
| +const y = 12345678901234567890; |
| +const z = x - y; |
| + |
| +const a = 1.0; |
| +const b = a << 3; // This would not be valid in Dart semantics. |
|
kasperl
2012/09/04 05:57:30
in -> with
floitsch
2012/09/04 13:10:42
Done.
|
| + |
| +const c = -0.0; |
| +const d = c << 1; // This would not be valid with Dart semantics. |
| + |
| +foo() => 12345678901234567891 - 12345678901234567890; |
| + |
| +main() { |
| + Expect.equals(0, z); |
| + Expect.equals(0, x - y); |
| + Expect.equals(0, foo()); |
| + Expect.isTrue(x is double); |
| + // TODO(floitsch): we probably want to change this to be true. |
| + Expect.isFalse(x is int); |
| + Expect.equals(8, b); |
| + Expect.equals(8, 1.0 << 3); // This would not be valid with Dart semantics. |
| + Expect.isTrue(1 == 1.0); |
| + Expect.equals(0, d); |
| + Expect.equals(0, -0.0 << 1); // This would not be valid with Dart semantics. |
| + // Make sure the 1 is not shifted into the 32 bit range. |
| + Expect.equals(0, 0x100000000 >> 3); |
| + // The dynamic int-check also allows -0.0. |
| + Expect.isTrue((-0.0) is int); |
| +} |