blob: 138e45fe28af559cd2781b08e9c5668ba741ed95 [file] [log] [blame]
// Copyright (c) 2023, 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 If e is an expression whose static type V is the extension type
/// Name<T1, .. Ts> and V has no member whose basename is the basename of m, a
/// member access like e.m(args) may be an extension member access, following
/// the normal rules about applicability and accessibility of extensions, in
/// particular that V must match the on-type of the extension
///
/// @description Checks that it is a compile-time error if `V` has no member
/// with name `m` and there is no extension member with the name `m`
/// @author sgrekhov22@gmail.com
extension Ex1 on V {
String foo() => "Ex1.foo()";
}
extension Ex2 on int {
String bar() => "Ex2.bar()";
}
extension type V(int id) {}
main() {
V v = V(42);
v.bar();
// ^^^
// [analyzer] unspecified
// [cfe] unspecified
v.id.foo();
// ^^^
// [analyzer] unspecified
// [cfe] unspecified
}