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