Support for building thunks for C++ methods. (#5972)

Also tweak how we import C++ methods to properly handle C++23's explicit
object parameters.
This commit is contained in:
Richard Smith
2025-08-25 22:33:51 +00:00
committed by GitHub
parent ddafbc9331
commit 8c9080801c
7 changed files with 492 additions and 106 deletions
@@ -18,7 +18,7 @@
auto foo(short a) -> void;
// CHECK:STDOUT: |-FunctionDecl {{0x[a-f0-9]+}} <./thunk_required.h:[[@LINE-1]]:1, col:22> col:6 used foo 'auto (short) -> void'
// CHECK:STDOUT: | `-ParmVarDecl {{0x[a-f0-9]+}} <col:10, col:16> col:16 a 'short'
// CHECK:STDOUT: `-FunctionDecl {{0x[a-f0-9]+}} <col:6> col:6 foo__carbon_thunk 'auto (short * _Nonnull) -> void' extern
// CHECK:STDOUT: `-FunctionDecl {{0x[a-f0-9]+}} <col:6> col:6 foo__carbon_thunk 'void (short * _Nonnull)' extern
// CHECK:STDOUT: |-ParmVarDecl {{0x[a-f0-9]+}} <col:6> col:6 used a 'short * _Nonnull':'short *'
// CHECK:STDOUT: |-ReturnStmt {{0x[a-f0-9]+}} <col:6>
// CHECK:STDOUT: | `-CallExpr {{0x[a-f0-9]+}} <col:6> 'void'