// Copyright (c) 2012, 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 'dart:html' as dom; import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package // Not defined in dom.Window. foo(x) => x; class Unused { foo(x) => 'not $x'; } int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1)); main() { var things = [new Unused(), dom.window]; test('windowNonMethod', () { var win = things[inscrutable(1)]; final message = foo("Hello World"); expect(() => win.foo(message), throwsNoSuchMethodError); }); test('foo', () { var win = things[inscrutable(0)]; String x = win.foo('bar'); expect(x, 'not bar'); }); // Use dom.window directly in case the compiler does type inference. test('windowNonMethod2', () { final message = foo("Hello World"); expect(() => (dom.window as dynamic).foo(message), throwsNoSuchMethodError); }); }