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

class B {}

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

typedef B BToB(B x);

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

class E extends D {
  // This override is illegal because C is not a subtype of BToB.
  C f() => C();
  //^
  // [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();
}
