// 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.7 // Test that loading of a library (with top-level functions only) can // be deferred. import 'package:async_helper/async_helper.dart'; import 'package:expect/expect.dart'; import 'deferred_function_library.dart' deferred as lib; bool isError(e) => e is Error; readFoo() { return lib.foo; } main() { Expect.throws(() { lib.foo('a'); }, isError); Expect.throws(readFoo, isError); int counter = 0; asyncStart(); lib.loadLibrary().then((_) { Expect.equals(1, ++counter); print('lazy was loaded'); Expect.equals(42, lib.foo('b')); Expect.isNotNull(readFoo()); asyncEnd(); }); Expect.equals(0, counter); asyncStart(); lib.loadLibrary().then((_) { Expect.equals(2, ++counter); print('lazy was loaded'); Expect.equals(42, lib.foo('b')); Expect.isNotNull(readFoo()); asyncEnd(); }); Expect.equals(0, counter); Expect.throws(() { lib.foo('a'); }, isError); Expect.throws(readFoo, isError); }