// 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

import "package:expect/expect.dart";

// Test to make sure the do/while loop exit condition is generated.

var global;

class A {
  var array;

  initArray() {
    if (global[0] == null) {
      return [2];
    } else {
      var map = new Map();
      map[0] = 2;
      return map;
    }
  }

  bar() {
    array = initArray();
    var element;
    do {
      element = array[0]; // bailout here
      if (element is Map) continue;
      if (element == null) break;
    } while (element != 2);
    return global[0]; // bailout here
  }
}

void main() {
  global = [2];
  for (int i = 0; i < 2; i++) {
    Expect.equals(2, new A().bar());
  }

  global = new Map();
  global[0] = 2;
  for (int i = 0; i < 2; i++) {
    Expect.equals(2, new A().bar());
  }
}
