Becca Royal-Gordon
80f38be3b8
[PrintAsClang] Fix thunks for Never funcs
...
Swift-to-C++ thunk printing for functions didn’t really take into account Swift’s `Never` type. This type maps to `SWIFT_NORETURN`, but it also requires other tweaks to code generation, such as omitting the `return` keyword. (Removing that requires minor changes to many tests.)
Fixes rdar://124137073.
2024-03-29 22:12:19 -07:00
Alex Lorenz
7caf34c190
[interop][SwiftToCxx] apply inline and artificial attributes to lambdas used with returnNewValue
2023-03-03 11:45:46 -08:00
Alex Lorenz
3948a2a5d3
[interop][SwiftToCxx] annotate inline thunks with SWIFT_INLINE_THUNK
...
This macro applies always_inline in addition to inline. It also applies artificial, which lets debugger know that this is an artificial function. The used attribute is added in debug builds to ensure that the symbol is emitted in the binary so that LLDB can invoke it.
2023-02-24 11:23:46 -08:00
Alex Lorenz
3b3d6c825a
[interop][SwiftToCxx] Annotate emitted declarations with Clang's external_source_symbol attribute
...
Each emitted declaration is annotated with the external_source_symbol with its own USR, to allow Clang's indexer to recognize this declaration as a Swift declaration with a specific USR
2023-01-12 12:15:01 -08:00
Alex Lorenz
a66cc52109
[interop][SwiftToCxx] add static_assert type checking for generic functions in pre-C++20 mode
...
In the future we should also use enable_if to correctly resolve overloads
2022-11-01 17:21:01 -07:00
Alex Lorenz
4b52ae08fa
[interop][SwiftToCxx] check that generics can be built in C++17/C++14 mode
2022-11-01 16:40:42 -07:00
Alex Lorenz
953c124ceb
[interop][SwiftToCxx] guard 'requires' clauses in __cpp_concepts #ifdefs
2022-11-01 16:17:10 -07:00
Alex Lorenz
3a9b6dce9d
[interop][SwiftToCxx] add support for emitting Swift stdlib dependency in one header file
...
This is the default behavior. You can disable this by specifying the -clang-header-expose-decls= flag explicitly when generating the header
2022-09-28 08:08:48 -07:00
Alex Lorenz
2132cc91d0
[interop][SwiftToCxx] do not use std::move to move the returned C++ value
...
move needs <utility>, which is not includable in the test SDK.
2022-09-19 12:25:42 -07:00
Alex Lorenz
0dcb8b58e5
[interop][SwiftToCxx] use C++ types bridged to Swift in Swift generic context from C++ ♾
2022-09-12 13:05:49 -07:00
Alex Lorenz
1696f94223
[interop][SwiftToCxx] reimplement function lowering to correctly distinguish between direct/indirect return values and parameters
2022-09-07 11:43:38 -07:00
Alex Lorenz
ef5d11aab8
[interop][SwiftToCxx] NFC, Make swift::getTypeMetadata accessor part of struct template
...
This allows partial template specializations for adding metadata accessor for generic types 🤩
2022-08-31 17:16:45 -07:00
Alex Lorenz
4154b56745
[interop][SwiftToCxx] unify generic function printing with generic struct printing
...
This is a pre-requisite for supporting methods in generic structs.
2022-08-31 15:31:04 -07:00
Alex Lorenz
a89d4f3ced
[interop][SwiftToCxx] add support for generic methods
2022-08-29 14:11:33 -07:00
Alex Lorenz
c08428cd56
[interop][SwiftToCxx] do not support generics with requirements for now
2022-08-29 12:14:33 -07:00
Alex Lorenz
f371c4307b
[interop][SwiftToCxx] pass boxed resilient value types to generic functions correctly
2022-08-09 14:16:58 -07:00
Alex Lorenz
330fc0b07a
[interop][SwiftToCxx] generic functions should return value types correctly
2022-08-09 05:20:58 -07:00
Alex Lorenz
bf224c75a6
[interop][SwiftToCxx] pass structs to generic functions
2022-08-08 15:28:00 -07:00
Alex Lorenz
a9f262e322
[interop][SwiftToCxx] add support for passing and returning class values to generic functions
2022-08-08 08:38:28 -07:00
Alex Lorenz
af32bbf8f3
[interop][SwiftToCxx] generics: add support for returning primitive generic types
2022-08-01 10:28:03 +01:00
Alex Lorenz
c31b6cfb0c
[interop][SwiftToCxx] generics: support inOut generic param
2022-07-29 09:15:40 +01:00
Alex Lorenz
32723f7e67
[interop][SwiftToCxx] initial generic function support: pass generic parameters
...
Only primitive types are supported at the moment from C++ as the type traits aren't emitted for all types yet
2022-07-28 22:52:21 +01:00