/*
 * Copyright (c) 2020, 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 It is an error if a class has a setter and a getter with the same
 * basename where the return type of the getter is not a subtype of the argument
 * type of the setter. Note that this error specifically requires subtyping and
 * not assignability and hence makes no exception for dynamic.
 *
 * @description Check that it is an error if a class has a setter and a getter
 * with the same basename where the return type of the getter is not a subtype
 * of the argument type of the setter
 * @author sgrekhov@unipro.ru
 * @issue 40333
 * @issue 40945
 */

class C {
  void set test(int v) {}
  dynamic get test => 3.14;
//^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

main() {
  C c = new C();
  c.test = 1;
  c.test;
}
