| Index: tests/compiler/dart2js_extra/17645_test.dart
|
| diff --git a/tests/compiler/dart2js_extra/17645_test.dart b/tests/compiler/dart2js_extra/17645_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..67d8de8f87deb1c9451e008688bda090373e39f1
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js_extra/17645_test.dart
|
| @@ -0,0 +1,74 @@
|
| +// 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";
|
| +
|
| +// Regression test for issue 17645.
|
| +get never => new DateTime.now().millisecondsSinceEpoch == 0;
|
| +
|
| +class A {
|
| + var foo;
|
| + A(this.foo);
|
| +}
|
| +
|
| +var log = [];
|
| +
|
| +test1(a, xs) { // Called with a = [null|exact=A]
|
| + log.clear();
|
| + for (var x in xs) {
|
| + if (a != null) {
|
| + log.add('${a.foo}.$x'); // a.foo must not be hoisted
|
| + }
|
| + }
|
| + return '$log';
|
| +}
|
| +
|
| +test2(a, xs) { // Called with a = [exact=A]
|
| + log.clear();
|
| + for (var x in xs) {
|
| + if (a != null) {
|
| + log.add('${a.foo}.$x'); // a.foo may be hoisted
|
| + }
|
| + }
|
| + return '$log';
|
| +}
|
| +
|
| +test3(a, xs) { // Called with a = [null|exact=A]
|
| + log.clear();
|
| + for (var x in xs) {
|
| + if (a is A) {
|
| + log.add('${a.foo}.$x'); // a.foo must not be hoisted
|
| + }
|
| + }
|
| + return '$log';
|
| +}
|
| +
|
| +test4(a, xs) { // Called with a = [exact=A]
|
| + log.clear();
|
| + for (var x in xs) {
|
| + if (a is A) {
|
| + log.add('${a.foo}.$x'); // a.foo may be hoisted
|
| + }
|
| + }
|
| + return '$log';
|
| +}
|
| +
|
| +
|
| +main() {
|
| + var a1 = new A('a1');
|
| + var a2 = new A('a2');
|
| +
|
| + Expect.equals('[a1.11]', test1(a1, [11]));
|
| + Expect.equals('[]', test1(null, [11]));
|
| +
|
| + Expect.equals('[a1.22]', test2(a1, [22]));
|
| + Expect.equals('[a2.22]', test2(a2, [22]));
|
| +
|
| +
|
| + Expect.equals('[a1.33]', test3(a1, [33]));
|
| + Expect.equals('[]', test3(null, [2]));
|
| +
|
| + Expect.equals('[a1.44]', test4(a1, [44]));
|
| + Expect.equals('[a2.44]', test4(a2, [44]));
|
| +}
|
|
|