| Index: tests/language/deferred_not_loaded_check_test.dart
|
| diff --git a/tests/language/deferred_not_loaded_check_test.dart b/tests/language/deferred_not_loaded_check_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bfe467c80608140aab2c99ca72c11bbb2e2c7f87
|
| --- /dev/null
|
| +++ b/tests/language/deferred_not_loaded_check_test.dart
|
| @@ -0,0 +1,72 @@
|
| +// Copyright (c) 2014, 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';
|
| +import 'package:async_helper/async_helper.dart';
|
| +
|
| +import "deferred_not_loaded_check_lib.dart" deferred as lib;
|
| +
|
| +// Test that we give appropriate errors when accessing an element that is not
|
| +// yet loaded.
|
| +
|
| +var c;
|
| +
|
| +expectNoSideEffect(test) {
|
| + c = 0;
|
| + test();
|
| + Expect.isTrue(c == 0);
|
| +}
|
| +
|
| +expectThrowsNotLoaded(test){
|
| + Expect.throws(test, (e) => e is Error);
|
| +}
|
| +
|
| +int sideEffect() {
|
| + c = 1;
|
| + return 10;
|
| +}
|
| +
|
| +void main() {
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Calling toplevel ${lib.foo(sideEffect())}");
|
| + });
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Calling static ${lib.C.foo(sideEffect())}");
|
| + });
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("New-expression ${new lib.C(sideEffect())}");
|
| + });
|
| + });
|
| + expectThrowsNotLoaded(() {
|
| + print("Getting var ${lib.a}");
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Setting var ${lib.a = sideEffect()}");
|
| + });
|
| + });
|
| + expectThrowsNotLoaded(() {
|
| + print("Getter ${lib.getter}");
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Setter ${lib.setter = sideEffect()}");
|
| + });
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Setter ${lib.list[sideEffect()] = sideEffect()}");
|
| + });
|
| + });
|
| + expectNoSideEffect(() {
|
| + expectThrowsNotLoaded(() {
|
| + print("Non-function static call ${lib.closure(sideEffect())}");
|
| + });
|
| + });
|
| +}
|
|
|