/*
 * Copyright (c) 2019, 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.
 */
/**
 * @assertion The static type of a member invocation on an extension application
 * is the return type of the extension member with the corresponding member name
 * of the invocation, with the explicit or inferred type arguments of the
 * extension application replacing the type parameters bound by the extension,
 * and the explicit or inferred type arguments of the invoked member replacing
 * the type parameters bound by the member
 *
 * @description Check static type of the extension member
 * @author sgrekhov@unipro.ru
 */
// SharedOptions=--enable-experiment=extension-methods

class C {
}

extension Ext on C {
  int bar() => 42;
}

void foo(String s) {}

main() {
  C c = C();
  foo(Ext(c).bar());
//    ^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified}
}
