// 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. import "package:expect/expect.dart"; class A { noSuchMethod(_) => 'foo'; get hashCode => 42; } // Keep that list empty to make the inferrer infer an empty element // type. var a = []; var b = [new A(), new Object() as dynamic]; main() { // The following [hashCode] call will create a selector whose // receiver type is empty. This used to make dart2js generate a // [noSuchMethod] handler for [hashCode] on the Object class, which // would override the actual implementation. Expect.throwsRangeError(() => a[0].hashCode); // This code calls the [hashCode] method put on the [Object] class, // which used to be a [noSuchMethod] handler method. Expect.isTrue(b[1].hashCode is int); // Sanity checks. Expect.equals(42, b[0].hashCode); Expect.equals('foo', b[0].foo()); // Prevent optimizations on the [b] variable. b.clear(); }