// 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();
}
