// Copyright (c) 2018, 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.

/**
 * @assertion The instance getters of a class C are those instance getters
 * declared by C, either implicitly or explicitly, and the instance getters
 * inherited by C from its superclass. The static getters of a class C are those
 * static getters declared by C.
 * A getter declaration may conflict with other declarations (10.11).
 * Let C be a class. It is a compile-time error if C declares a
 * • getter or a setter with basename n, and has a method named n.
 * • method named n, and has a getter or a setter with basename n.
 *
 * @description Checks that it is no compile-time error if a class has an
 * explicitly declared instance getter and a static field with the same name
 * declared in its superclass.
 * @author ngl@unipro.ru
 */

class A {
  static int v = 0;
}

class C extends A {
  get v {
    return 5;
  }
}

main() {
  new C().v;
}
