| Index: tests/language_2/additional_interface_adds_optional_args_concrete_subclass_test.dart | 
| diff --git a/tests/language_2/additional_interface_adds_optional_args_concrete_subclass_test.dart b/tests/language_2/additional_interface_adds_optional_args_concrete_subclass_test.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..523a972c8002c051e6e2b27eeb76b080aefb62d0 | 
| --- /dev/null | 
| +++ b/tests/language_2/additional_interface_adds_optional_args_concrete_subclass_test.dart | 
| @@ -0,0 +1,31 @@ | 
| +// Copyright (c) 2017, 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. | 
| + | 
| +class A { | 
| +  void foo() {} | 
| +} | 
| + | 
| +abstract class I { | 
| +  void foo([x]); | 
| +} | 
| + | 
| +abstract class B extends A implements I { | 
| +  // If this class were concrete, there would be a problem, since `new | 
| +  // B().foo(42)` would be statically allowed, but would lead to invalid | 
| +  // arguments being passed to A.foo.  But since the class is abstract, there is | 
| +  // no problem. | 
| +} | 
| + | 
| +class /*@compile-error=unspecified*/ C extends B { | 
| +  // However, there is a problem here because this class is concrete and doesn't | 
| +  // override foo. | 
| +} | 
| + | 
| +void f(B b) { | 
| +  b.foo(); | 
| +} | 
| + | 
| +main() { | 
| +  f(new C()); | 
| +} | 
|  |