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
2c83ff7643
Merge pull request #61823 from Robertorosmaninho/interop/ExpectedClassForErrorHandling
...
[Interop][SwiftToCxx] Introduces swift::Expected
2022-12-16 17:47:28 -08:00
Alex Lorenz
28af8bef55
[interop][SwiftToCxx] make it possible to convert Swift String to a std::string in C++
...
This is done by exposing nested Index and UTF8View type in String. Nested types aren't
supported yet, so we need to employ a number of hacks to emit them.
2022-12-14 16:22:41 -08:00
Roberto Rosmaninho
5fc55b6e4f
Add <new> into every bridge header
2022-12-14 12:59:00 -03:00
Alex Lorenz
5c703b4f5c
[interop][SwiftToCxx] support std::string -> Swift::String conversion in C++
2022-12-13 13:13:05 -08:00
Alex Lorenz
7c2ee165cc
[interop][SwiftToCxx] only emit metadata references for record types
2022-12-11 21:11:46 -08:00
Alex Lorenz
510b7675f4
[interop][CxxToSwiftToCxx] fix the tests for unsupported class template instantions; emit C++ type metadata accessors for type aliased templates
2022-12-08 21:28:29 -08:00
Alex Lorenz
0312e0613d
[interop][SwiftToCxxToSwift] hide reverse interop module namespaces from forward interop
2022-11-07 15:52:04 -08:00
Slava Pestov
0e4ccb21ed
AST: Remove various references to AbstractTypeParamDecl
2022-11-01 19:13:46 -04:00
Alex Lorenz
fdc0632659
[interop][SwiftToCxx] do not emit domain ObjC error values in C++ mode
2022-10-21 12:47:18 -07:00
Alex Lorenz
f8b54e7ea7
[interop][SwiftToCxx] guard inline emitted Stdlib module
2022-10-03 11:31:06 -07:00
Alex Lorenz
dd7e068391
[interop][SwiftToCxx] add a Swift stdlib overlay header
...
It currently provides begin and end functions for array iteration
2022-09-29 07:41:54 -07:00
Alex Lorenz
43848fdb14
Merge pull request #61342 from apple/eng/fwd-decl-no-bridge
...
[interop][SwiftToCxx] forward declare - do not use bridged types in C…
2022-09-28 21:57:59 -07:00
Alex Lorenz
3dfcb96ad5
[interop][SwiftToCxx] forward declare - do not use bridged types in C++ mode
...
This allows SDK's stdlib Array to correctly decl String forward declaration
2022-09-28 14:11:13 -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
88913c1d65
[interop][SwiftToCxx] expose generic type traits for C++ types in generated header before it's used first
2022-09-13 07:47:30 -07:00
Alex Lorenz
d5c531fefc
[interop][SwiftToCxx] experimentally expose exposable Swift's Array members to C++
2022-09-12 20:42:16 -07:00
Alex Lorenz
1a449f5904
[interop][SwiftToCxx] emit members in extensions for same-type
2022-09-12 20:38:21 -07:00
Alex Lorenz
26e5742fe7
[interop][SwiftToCxx] emit generic type traits for C++ types bridged into Swift and then back to C++
2022-09-12 12:39:30 -07:00
Alex Lorenz
b4d7a0c208
[interop][SwiftToCxx] bridge returned C++ record types back to C++ from Swift
2022-09-11 18:42:41 -07:00
Tongjie Wang
cbc23cbafc
[Interop][SwiftToCxx] Support enum creation from Cxx
2022-08-29 20:16:52 -07:00
Alex Lorenz
e9450cf80b
[interop][SwiftToCxx] add a test to print out empty Swift stdlib module
2022-08-24 15:10:11 -07:00
Alex Lorenz
8de79390be
[interop][SwiftToCxx] add @_expose(Cxx) attribute support
...
This attribute instructs the compiler that this declaration should be included in the generated C++ bindings
2022-08-24 10:14:07 -07:00
Alex Lorenz
489c16e906
[interop][SwiftToCxx] fix the circular depedency issue for struct emission
2022-08-19 15:02:56 -07:00
Alex Lorenz
94f6496431
[interop][SwiftToCxx] NFC,do not require definition of protocols for classes in C++ generation mode
2022-08-16 10:44:18 -07:00
Alex Lorenz
26d55a2b83
[interop][SwiftToCxx] start emitting bindings for Swift class types
...
This includes release on destruction, and correctly returning class values from Swift to C++.
2022-08-02 09:25:35 +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
Becca Royal-Gordon
dfb8d7452a
Merge pull request #59672 from beccadax/what-is-the-protocol-for-generating-sendable
...
Ignore Sendable conformances in PrintAsClang
2022-06-23 17:15:09 -07:00
Becca Royal-Gordon
8a8e71ea09
Ignore Sendable conformances in PrintAsClang
...
PrintAsClang previously tried to print Sendable conformances, which tripped an assertion and failed. Skip them instead.
Fixes rdar://95241184.
2022-06-23 13:16:41 -07:00
Tongjie Wang
890ef3d269
clang-format on TODO
2022-06-21 20:25:02 -07:00
Tongjie Wang
c26e6b062b
Improve test cases and change a FIXME to TODO
2022-06-21 15:56:49 -07:00
Tongjie Wang
00598e8019
[interop][SwiftToCxx] add initial support for passing/returning enums
2022-06-20 00:45:07 -07:00
Alex Lorenz
d7fd1233a9
[interop][SwiftToCxx] emit instance property getters for structs
2022-06-14 17:20:37 -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
Alex Lorenz
9d56de1c0c
[interop] NFC, create ClangSyntaxPrinter class
2022-03-24 09:07:09 -07:00
Alex Lorenz
81a9cade88
[interop] generate C interfaces for Swift top-level functions that use primitive types
2022-03-22 16:13:42 -07:00
Alex Lorenz
86f9162606
[PrintAsClang] NFC, refactor primitive type mapping logic out from DeclAndTypePrinter
...
This will allow us to use type mappings in the C ABI function printer.
2022-03-21 11:26:58 -07:00
Alex Lorenz
80bc75ab9b
[cxx-interop] Emit C++ declarations only when '-clang-header-expose-public-decl' is enabled
...
This fix also ensures that we only emit C++ functions for now
2022-03-20 20:22:02 -07:00
Alex Lorenz
fcdcb2a9f1
[interop][SwiftToC++] print C++ interface for top-level Swift functions
2022-03-09 14:53:12 -08:00
Alex Lorenz
54b466f983
[interop] emit a parsable C++ header for a module that includes namespace declaration for the module interface
2022-01-21 07:14:56 -08:00
Alex Lorenz
e106551028
[NFC][interop] rename the PrintAsObjC library to PrintAsClang
...
We're starting to support emission of C++ header interfaces, so a language-agnostic name makes more sense
2022-01-20 11:31:58 -08:00