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

import "package:expect/expect.dart";

// Test that the return type of a method is being registered for both
// its bailout and optimized version in dart2js.

var a;

bar() {
  if (a[0] == 0) {
    // Force bailout version.
    bar();
    // Avoid inlining.
    throw 0;
  }
  for (int i = 0; i < 10; i++) {
    a[0] = 42;
  }
  // This return should say that bar can return an array or unknown.
  return a;
}

foo() {
  if (a[0] == 0) {
    // Avoid inlining.
    throw 0;
  }
  var b = bar();
  // This check used to fail because dart2js was assuming [b] was an
  // array.
  Expect.equals(1, b.length);
}

main() {
  a = new Map();
  bar();
  foo();
}
