blob: 8e402a490d1f70508d69d4134424c03aaf6ff2dd [file] [log] [blame]
// 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() => 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();
}