blob: 0415076b45fe48b37583e446abaa8c30cde2b7c0 [file] [log] [blame]
// Copyright (c) 2020, 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.
main(List<String> args) {
late int Function() recursiveInitLocal;
late final int local = recursiveInitLocal();
bool doRecursiveInitLocal = true;
recursiveInitLocal = () {
print('Executing initializer');
if (doRecursiveInitLocal) {
doRecursiveInitLocal = false;
print('Trigger recursive initialization');
int val = local;
print('Final local has value $val');
print('Returning 4 from initializer');
return 4;
}
print('Returning 3 from initializer');
return 3;
};
throws(() {
int val = local;
print('Final local has value $val');
}, "Read local");
}
expect(expected, actual) {
if (expected != actual) throw 'Expected $expected, actual $actual';
}
throws(f(), String message) {
dynamic value;
try {
value = f();
} on Error catch (e) {
print(e);
return;
}
throw '$message: $value';
}