mirror of
https://github.com/dart-lang/sdk
synced 2024-09-20 07:21:33 +00:00
48 lines
975 B
Dart
48 lines
975 B
Dart
// 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.
|
|
|
|
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());
|
|
}
|
|
}
|