| // Copyright (c) 2012, 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 = 2.9 | 
 |  | 
 | // Checks that an overriding method has compatible parameters. | 
 |  | 
 | abstract class I { | 
 |   m({a, b}); | 
 | } | 
 |  | 
 | abstract class J extends I {} | 
 |  | 
 | abstract class K extends J { | 
 |   m({c, d}); // //# 00: compile-time error | 
 | } | 
 |  | 
 | class C implements I { | 
 |   m({a, b}) { | 
 |     print("$a $b"); | 
 |   } | 
 | } | 
 |  | 
 | class D | 
 |     extends C // //# 01: compile-time error | 
 |     implements I // //# 02: compile-time error | 
 |     implements J // //# 03: compile-time error | 
 | { | 
 |   m({c, d}) { | 
 |     print("$c $d"); | 
 |   } | 
 | } | 
 |  | 
 | int main() { | 
 |   var c = new C(); | 
 |   c.m(a: "hello", b: "world"); | 
 |   var d = new D(); | 
 |   d.m(c: "hello", d: "world"); | 
 | } |