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