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