blob: 115b14c1b1be4789fc20d4ae6288a664414185ed [file] [log] [blame]
// Copyright (c) 2024, 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.
//
// Test that OSR gets into nested try-block correctly.
//
// VMOptions=--optimization-counter-threshold=100
import 'package:expect/expect.dart';
String s = '';
foo() {
var x = 1;
try {
try {
while (true) {
try {
try {
if (x < -1) {
print('x is negative? impossible');
}
while (true) {
x += 1;
if (x > 200) {
throw '$x';
}
}
} on String catch (e) {
s += 'got string $e;';
}
} on List catch (e) {
s += 'on List: $e;';
}
if (x > 200) {
throw x / 2;
}
}
} on double catch (e) {
s += 'on double: $e;';
}
} on int catch (e) {
s += 'x: $x e: $e;';
} finally {
s += 'and finally;';
}
}
main() {
foo();
Expect.equals('got string 201;on double: 100.5;and finally;', s);
}