// 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.

// @dart = 2.9

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