| // 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 17483. | |
| confuse(x) { | |
| if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(x); | |
| return x; | |
| } | |
| foo(trace) { | |
| trace.add("foo"); | |
| return "foo"; | |
| } | |
| bar(trace) { | |
| trace.add("bar"); | |
| return "bar"; | |
| } | |
| main() { | |
| var f = confuse(foo); | |
| var b = confuse(bar); | |
| var trace = []; | |
| // Dart2js must keep the order of t1 and t2. | |
| var t1 = f(trace); | |
| var t2 = b(trace); | |
| var t3 = identical(t2, "foo"); | |
| trace.add(t1); | |
| trace.add(t3); | |
| trace.add(t3); | |
| Expect.listEquals(["foo", "bar", "foo", false, false], trace); | |
| } |