// 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])); }