blob: d41f9407bb253c947f18257af74e21b8ec85f32c [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.
abstract class Base {
void f(int i);
void g([int i]);
void h({int i});
}
abstract class Mixin implements Base {}
class Derived extends Object with Mixin {
// Type `(int) -> void` should be inherited from `Base`
f(i) {}
// Type `([int]) -> void` should be inherited from `Base`
g([i = -1]) {}
// Type `({h: int}) -> void` should be inherited from `Base`
h({i = -1}) {}
}
main() {
var d = new Derived();
d.f('bad');
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
// [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
d.g('bad');
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
// [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
d.h(i: 'bad');
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
// ^
// [cfe] The argument type 'String' can't be assigned to the parameter type 'int'.
Object x = d.f(1);
// ^
// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
// [cfe] This expression has type 'void' and can't be used.
Object y = d.g(1);
// ^
// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
// [cfe] This expression has type 'void' and can't be used.
Object z = d.h(i: 1);
// ^
// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
// [cfe] This expression has type 'void' and can't be used.
}