Don't form a bound method when calling a C++ operator. (#7345)

Because we now support calling a function with a `self` parameter
directly, we can unconditionally call `operator$(lhs, rhs)` rather than
calling `lhs.operator$(rhs)` if the selected operator function happens
to be a member function.

This makes the logic a bit simpler and the SemIR a bit smaller.

We can't do the same for Carbon operators, unfortunately, as we use the
member access to trigger impl lookup.
This commit is contained in:
Richard Smith
2026-06-11 21:49:20 +00:00
committed by GitHub
parent e83422b375
commit c3fc59b8b9
7 changed files with 13 additions and 143 deletions
-5
View File
@@ -738,11 +738,6 @@ static auto GetAsCppFunctionDecl(Context& context, SemIR::InstId inst_id)
: nullptr;
}
auto IsCppOperatorMethod(Context& context, SemIR::InstId inst_id) -> bool {
auto* function_decl = GetAsCppFunctionDecl(context, inst_id);
return function_decl && IsCppOperatorMethodDecl(function_decl);
}
auto IsCppConstructorOrNonMethod(Context& context, SemIR::InstId inst_id)
-> bool {
auto* function_decl = GetAsCppFunctionDecl(context, inst_id);