// 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 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'; }