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

// @dart = 2.9

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



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
}
