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

/*@testedFeatures=inference*/
library test;

abstract class I<E> {
  String m(/*@topType=dynamic*/ a, String f(v, E e));
}

abstract class A<E> implements I<E> {
  const A();
  String m(/*@topType=dynamic*/ a, String f(v, E e));
}

abstract class M {
  final int y = 0;
}

class B<E> extends A<E> implements M {
  const B();
  int get y => 0;

  /*@topType=String*/ m(/*@topType=dynamic*/ a, f(v, E e)) {}
}

foo() {
  int y = /*error:INVALID_ASSIGNMENT*/ new /*@typeArgs=dynamic*/ B()
      . /*@target=B::m*/ m(null, null);
  String z = new /*@typeArgs=dynamic*/ B(). /*@target=B::m*/ m(null, null);
}

main() {}
