// 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.
// Dart test program to test arithmetic operations.

// @dart = 2.9

class B {}

class C {
  B call(B b) => b;
}

typedef B BToB(B x);

class D {
  BToB f() => null;
  void g(C x) {}
}

class E extends D {
  // This override is illegal because C is not a subtype of BToB.
  C f() => null;
  //^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  // [cfe] The return type of the method 'E.f' is 'C', which does not match the return type, 'B Function(B)', of the overridden method, 'D.f'.

  // This override is illegal because BToB is not a supertype of C.
  void g(BToB x) {}
  //   ^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  //          ^
  // [cfe] The parameter 'x' of the method 'E.g' has type 'B Function(B)', which does not match the corresponding type, 'C', in the overridden method, 'D.g'.
}

main() {
  new E();
}
