// 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]);
}

class B extends A implements I {
//    ^
// [analyzer] COMPILE_TIME_ERROR.INVALID_IMPLEMENTATION_OVERRIDE
// [cfe] The implementation of 'foo' in the non-abstract class 'B' does not conform to its interface.

  // This class declaration violates soundness, since it allows `new
  // B().foo(42)`, which would lead to invalid arguments being passed to A.foo.
}

void f(B b) {
  b.foo();
}

main() {
  f(new B());
}
