Alex Lorenz
3cce09e769
[interop][SwiftToCxx] annotate several value members types as 'noexcept'
...
C++/clang is more strict about requiring noexcept in templates so we need some explicit annotations
2023-03-12 11:49:14 -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
cc5b557cee
[interop][SwiftToCxx] Attach SWIFT_SYMBOL to C++ enum case declarations
2023-01-12 14:01:30 -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
8336edd344
[interop][SwiftToCxx] add support for constructing generic enum cases in C++
...
We only support cases with no payload, or one associated value still
2022-11-03 12:21:27 -07:00
Alex Lorenz
c179e23b19
[interop][SwiftToCxx] add static_assert type checking for generic types in pre-C++20 mode
2022-11-01 17:36:37 -07: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
2a05109c58
[interop][SwiftToCxx] Declare the generic usability type trait before the C++ class that represents the Swift type
...
This allows you to import a method that returns the type of the context in which the method is declared when such
type is a generic parameter in another type. This means that it's now possible to bridge the initializer for
RawRepresentable enums.
2022-09-21 07:57:32 -07:00
Alex Lorenz
7925701ed3
[interop][SwiftToCxx] support returning class values in enum's generic associated value getter
2022-09-14 12:37:27 -07:00
Alex Lorenz
773a0436cf
[interop][SwiftToCxx] extract generic associated value from enum
2022-09-14 12:21:18 -07:00
Alex Lorenz
07337cdaf6
[interop][SwiftToCxx] initial generic enum support
2022-09-14 11:37:50 -07:00