Alex Lorenz
de10b4155e
[interop][SwiftToCxx] support copy-assignment operation for Swift value types and prohibit move assignment explicitly
...
Fixes https://github.com/apple/swift/issues/66324
Note: move semantics for Swift value types are not yet supported in C++
2023-06-06 15:55:30 -07:00
Alex Lorenz
39d86bc701
[interop][SwiftToCxx] the not yet implemented move constructor for Swift value types should lead to link error when a move is used in Swift, not runtime error
2023-05-07 08:55:28 -07:00
Alex Lorenz
394c5bc7ce
[interop] fix tests after fixing private annotations on the 'swift' namespace
2023-03-18 19:30:06 -07:00
Alex Lorenz
94c1de7611
[interop][SwiftToCxx] use 'SWIFT_INLINE_PRIVATE_HELPER' macro for static returnNewValue functions to ensure attribute(used) isn't applied to them
2023-03-15 09:13:38 -07:00
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
0dc90d38c1
[interop][SwiftToCxx] emit Swift's stdlib inside of 'swift' namespace
2023-03-09 17:32:43 -08:00
Augusto Noronha
6f68fb0dde
Merge pull request #63950 from augusto2112/print-debug-name
...
Print debug name
2023-03-01 15:14:55 -08:00
Augusto Noronha
c3d3c37c15
Adapt tests to have the Swift mangled name as a field in interop types
2023-02-27 15:58:03 -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
0312e0613d
[interop][SwiftToCxxToSwift] hide reverse interop module namespaces from forward interop
2022-11-07 15:52:04 -08: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
ae549531ac
Merge pull request #61225 from hyp/eng/fwd-generic-trait
...
[interop][SwiftToCxx] Declare the generic usability type trait before…
2022-09-21 15:56:14 -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
1d6d3ff970
[interop][SwiftToCxx] trap on moves of Swift values for now
...
Move support will be added later
2022-09-21 06:59:29 -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
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
Tongjie Wang
38b6947fdd
update test case for arm64e value witness table authentication
2022-07-18 18:21:12 -07:00
Tongjie Wang
290e527b0b
[Interop][SwiftToCxx] Initial support for getting associated values from enum
...
improve test cases
add support for primitive types
2022-07-18 18:19:00 -07:00
Alex Lorenz
d7fd1233a9
[interop][SwiftToCxx] emit instance property getters for structs
2022-06-14 17:20:37 -07:00
Alex Lorenz
3533686605
[interop][SwiftToCxx] emit copy constructor that calls value witness initWithCopy function for Swift structs
2022-06-13 15:33:43 -07:00
Alex Lorenz
b787172302
[interop][SwiftToCxx] emit destructor that calls value witness destroy function for Swift structs
2022-06-13 15:02:55 -07:00
Alex Lorenz
9254c47b2c
[interop][SwiftToCxx] emit swift type metadata access function declaration for structs
2022-06-13 09:16:17 -07:00
Alex Lorenz
132729906c
[interop][SwiftToCxx] pass / return Swift struct values between C/C++ and Swift
2022-06-08 07:03:24 -07:00
Alex Lorenz
42c6ff63b8
[interop][SwiftToCxx] Gather initial struct layout information and emit struct stubs with storage in C++
...
This change extends the clang header printer to start emitting C++ classes for Swift struct types with the correct struct layout in them (size + alignment)
2022-06-01 14:06:25 -07:00
Alex Lorenz
a7053e458f
[interop][swiftToCxx] emit empty skeleton C++ classes for Swift struct decls
2022-05-25 12:26:25 -07:00