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