| // 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. |
| |
| // 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: static type warning |
| } |
| |
| class C implements I { |
| m({a, b}) { |
| print("$a $b"); |
| } |
| } |
| |
| class D |
| extends C /// 01: static type warning |
| implements I /// 02: static type warning |
| implements J /// 03: static type warning |
| { |
| 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"); |
| print("${c is I} ${d is I} ${d is I} ${d is J}"); |
| } |
| |