// Copyright (c) 2013, 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.

// @dart = 2.9

// Regression test for dart2js that used to generate wrong code for
// [foo].

import "package:expect/expect.dart";

main() {
  var result = foo(1, 2);
  Expect.equals(1, result[0]);
  Expect.equals(2, result[1]);

  result = foo([], 2);
  Expect.equals(0, result[0]);
  Expect.listEquals([], result[1]);
}

@pragma('vm:never-inline')
@pragma('dart2js:noInline')
foo(a, b) {
  () => 42;
  if (a is List) {
    var saved = a as List;
    // By having two HTypeKnown SSA instructions for [a], dart2js was
    // confused when updating the phis at exit of this block.
    a = a.length;
    b = saved;
  }
  return [a, b];
}
