// Copyright (c) 2011, 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"; // Tests that we can call functions through getters which return null. const dynamic TOP_LEVEL_NULL = null; var topLevel; class CallThroughNullGetterTest { static void testMain() { testTopLevel(); testField(); testGetter(); testMethod(); } static void testTopLevel() { topLevel = null; Expect.throwsNoSuchMethodError(() => topLevel()); Expect.throwsNoSuchMethodError(() => (topLevel)()); Expect.throwsNoSuchMethodError(() => TOP_LEVEL_NULL()); Expect.throwsNoSuchMethodError(() => (TOP_LEVEL_NULL)()); } static void testField() { A a = new A(); a.field = null; Expect.throwsNoSuchMethodError(() => a.field()); Expect.throwsNoSuchMethodError(() => (a.field)()); } static void testGetter() { A a = new A(); a.field = null; Expect.throwsNoSuchMethodError(() => a.getter()); Expect.throwsNoSuchMethodError(() => (a.getter)()); } static void testMethod() { A a = new A(); a.field = null; Expect.throwsNoSuchMethodError(() => a.method()()); } } class A { A() {} var field; get getter { return field; } method() { return field; } } main() { CallThroughNullGetterTest.testMain(); }