Commit Graph

1876 Commits

Author SHA1 Message Date
Egor Zhdan
232259ce99 [cxx-interop] Enable an overlay test on Linux
Resolves https://github.com/apple/swift/issues/66363
2023-10-24 13:16:41 +01:00
Mishal Shah
aa6a588f45 Merge pull request #69163 from apple/rebranch
Merge `rebranch` into `main` to support `stable/20230725` llvm-project branch
2023-10-23 09:26:37 -07:00
Egor Zhdan
879b04f2e7 Merge pull request #69327 from apple/egorzhdan/circular-requests
[cxx-interop] Avoid circular reference errors when importing C++ structs
2023-10-23 14:35:02 +01:00
Egor Zhdan
4632d894e6 [cxx-interop] Avoid circular reference errors when importing C++ structs
When importing a C++ struct, if its owning module requires cplusplus, Swift tried to auto-conform it to certain protocols from the Cxx module. This triggers name lookup in the clang struct, specifically for `__beginUnsafe()` and `__endUnsafe` methods, which imports all of the base structs including their methods.

This moves the import of base structs out of the name lookup request, preventing cycles.

rdar://116426238
2023-10-23 12:19:05 +01:00
Harlan Haskins
4ac34a40ea @retroactive conformance syntax and checking (#36068) 2023-10-20 14:27:03 -07:00
Ben Barham
360c5d8465 Merge remote-tracking branch 'origin/main' into 20231019-merge-main
Conflicts:
  - `lib/AST/TypeCheckRequests.cpp` renamed `isMoveOnly` which requires
    a static_cast on rebranch because `Optional` is now a `std::optional`.
2023-10-19 16:16:23 -07:00
Alex Lorenz
be24516f85 [cxx-interop] Fix test failures after https://github.com/apple/swift/pull/68846
rdar://117205273
2023-10-19 12:33:24 -07:00
Alex Lorenz
c2e15d6472 [cxx-interop] disallow use of non-trivial C++ types in @objc declarations
Even though such types can technically be represented in C++, Swift's @objc support does not support them

rdar://114163485
2023-10-18 17:49:13 -07:00
Alex Lorenz
41dc466108 Merge pull request #68846 from hyp/eng/base-member-cxx-synthesized-accessor
[cxx-interop] Use a synthesized C++ method when invoking a base metho…
2023-10-17 07:07:59 -07:00
Evan Wilde
312bd47f4c Merge remote-tracking branch 'main' into 'rebranch' 2023-10-16 23:00:12 -07:00
Alex Lorenz
f7ce9aa37f [cxx-interop] Synthesized derived-to-base field getter should copy out a retainable FRT value
This matches the semantics of accessing the same field from the base class
2023-10-16 14:41:44 -07:00
Alex Lorenz
415045024c [cxx-interop] Use a synthesized C++ method when accessing a base field or subscript from a derived class synthesized method
The use of a synthesized C++ method allows us to avoid making a copy of self when accessing the base field or subscript from Swift
2023-10-16 14:34:37 -07:00
finagolfin
75bfa4422a [android][test] Fix five tests that are failing on the community Android CI (#69189)
Update the Android doc with info about the latest LTS NDK not working.
2023-10-16 10:44:56 -07:00
swift-ci
ebd4bb6f0c Merge remote-tracking branch 'origin/main' into rebranch 2023-10-11 07:37:15 -07:00
Crazy凡
02a9259dda [cxx-interop] Provide similar support for std::u32string as std::string and std::u16string. 2023-10-10 16:01:15 +08:00
Evan Wilde
24d0db249b Merge remote-tracking branch 'main' into 'rebranch'
Conflicts:
  CMakeLists.txt
    Take new BRIDGING_MODE

  SwiftCompilerSources/Sources/SIL/GlobalVariable.swift
    Take new
2023-10-09 17:21:23 -07:00
Augusto Noronha
efc86aafb5 Merge pull request #68843 from augusto2112/keep-funcs-for-deb-tests
Keep certain function that are potentially used in the debugger
2023-10-09 13:58:21 -07:00
Alex Lorenz
3a6a10bb87 Merge pull request #68815 from hyp/eng/re-enable-interop-rebranch-testing
[rebranch] Revert "Disabling failing Cxx Interop tests for rebranch"
2023-10-09 11:13:48 -07:00
Egor Zhdan
041005af7c [cxx-interop] Use more correct type names in C++ template parameters
When importing a C++ class template instantiation, Swift translates the template parameter type names from C++ into their Swift equivalent.

For instance, `basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>>` gets imported as `basic_string<Scalar, char_traits<Scalar>, allocator<Scalar>>`: `wchar_t` is imported as `CWideChar`, which is a typealias for `Scalar` on most platforms including Darwin. Notice that Swift goes through the `CWideChar` typealias on the specific platform. Another instantiation `basic_string<uint32_t, char_traits<uint32_t>, allocator<uint32_t>>` also gets imported as `basic_string<Scalar, char_traits<Scalar>, allocator<Scalar>>`: `uint32_t` is also imported as `Scalar`. This is problematic because we have two distinct C++ types that have the same name in Swift.

This change makes sure Swift doesn't go through typealiases when emitting names of template parameters, so `wchar_t` would now get printed as `CWideChar`, `int` would get printed as `CInt`, etc.

This also encourages clients to use the correct type (`CInt`, `CWideChar`, etc) instead of relying on platform-specific typealiases.

rdar://115673622
2023-10-09 14:57:10 +01:00
Augusto Noronha
1c4b67afd1 Adapt tests to changes to keep functions for debugger on Onone
Now that we keep many more functions on unoptimized builds, many tests
need to be changed to either:
- Account for function that wasn't being emitted before to being emitted
  now.
- Account for functions that previously were being emitted lazily to
  being emitted eagerly now.
2023-10-06 11:08:10 -07:00
swift-ci
aabe4343f5 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-05 11:15:54 -07:00
mohanadkandil
d58943a508 Add filter method for ordered and unordered map (#67501)
Co-authored-by: mkandil <mkandil@synapse-analytics.io>
2023-10-05 19:13:34 +01:00
swift-ci
447482505a Merge remote-tracking branch 'origin/main' into rebranch 2023-10-05 08:05:25 -07:00
Egor Zhdan
0b2048d096 Merge pull request #68578 from apple/egorzhdan/cxx-convertible-to-bool
[cxx-interop] Add conversion to Bool for types that define `operator bool()`
2023-10-05 15:52:03 +01:00
Evan Wilde
5dd609ae15 Merge pull request #68553 from compnerd/unxfail
test: adjust tests for Windows after the rebranch
2023-10-03 14:06:26 -07:00
Alex Lorenz
82f8d5d1e8 [cxx-interop] add additional tests for calling base methods on FRT 2023-09-29 14:18:02 -07:00
Alex Lorenz
ba5b1bab89 [cxx-interop] Use a synthesized C++ method when invoking a base method from a derived class synthesized method
The use of a synthesized C++ method allows us to avoid making a copy of self when invoking the base method from Swift
2023-09-29 13:52:10 -07:00
swift-ci
c6b4638c38 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-29 10:36:19 -07:00
Alex Lorenz
1f6373ee8b Revert "Revert "Revert "[cxx-interop] Use up-to-date definition of CF_OPTIONS in tests"""
This reverts commit 6a3defdfb0.
2023-09-28 18:47:26 -07:00
Alex Lorenz
21fbd7a48f Revert "Revert "Revert "[cxx-interop] Import custom NS_OPTIONS correctly"""
This reverts commit f7c2257f51.
2023-09-28 18:47:19 -07:00
Alex Lorenz
59f86d71f2 Revert "[cxx-interop] Refactor: do not rely on Clang module importer being available"
This reverts commit 6a2f10a388.
2023-09-28 18:47:12 -07:00
Alex Lorenz
a6bc07d255 Revert "Disabling failing Cxx Interop tests for rebranch"
This reverts commit 3aea04c440.
2023-09-27 19:06:44 -07:00
Evan Wilde
700aa8aa70 Merge remote-tracking branch 'upstream/main' into rebranch
Merge conflict while removing `nocapture` from
`s21move_function_dbginfo20addressOnlyValueTestyyxAA1PRzlF`. Resolution
was to remove nocapture from the expected output in both cases:
```
// CHECK-LABEL: define swiftcc void @"$s21move_function_dbginfo20addressOnlyValueTestyyxAA1PRzlF"(ptr noalias[-nocapture-] %0, ptr %T, ptr %T.P)
```

Conflict cause: 4858cb6225
This is the same as the original change to this file. The conflict seems
to be due to the next line changing, when moving from llvm.dbg.addr to
llvm.dbg.value.

Conflicts:
  test/DebugInfo/move_function_dbginfo.swift
2023-09-26 13:36:57 -07:00
Alex Lorenz
6ecea1ac09 Merge pull request #68481 from hyp/eng/no-nocapture
[IRGen][interop] do not add 'nocapture' to not bitwise takable types
2023-09-26 07:52:05 -07:00
swift-ci
812300d632 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-26 05:36:14 -07:00
Alex Lorenz
4858cb6225 [IRGen][interop] do not add 'nocapture' to not bitwise takable types
The use of 'nocapture' for parameters and return values is incorrect for C++ types, as they can actually capture a pointer into its own value (e.g. std::string in libstdc++)

rdar://115062687
2023-09-25 17:43:34 -07:00
Egor Zhdan
80448d2f1c Revert "[cxx-interop] Look up NSNotificationName in C++ language mode properly"
This reverts commit e956e8ac1d.
2023-09-25 20:14:00 +01:00
swift-ci
72e3d66404 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-23 15:35:20 -07:00
Kavon Farvardin
0944d46e65 [nfc] fix spelling; invertable -> invertible 2023-09-22 17:04:57 -07:00
swift-ci
094988051f Merge remote-tracking branch 'origin/main' into rebranch 2023-09-19 08:55:18 -07:00
Egor Zhdan
6a2f10a388 [cxx-interop] Refactor: do not rely on Clang module importer being available
This makes sure that we can emit a pch from a C++ header that uses `CF_OPTIONS`.

rdar://112225263
2023-09-18 21:54:11 +01:00
Egor Zhdan
f0be52accd [cxx-interop] Add conversion to Bool for types that define operator bool()
C++ `operator bool()` is currently imported into Swift as `__convertToBool()`, which shouldn't be used by clients directly.

This adds a new protocol into the C++ stdlib overlay: `CxxConvertibleToBool`, along with an intitializer for `Swift.Bool` taking an instance of `CxxConvertibleToBool`.

rdar://115074954
2023-09-18 14:54:45 +01:00
Saleem Abdulrasool
b039b2a836 test: correctly mark the test as XFAIL
This was happening to pass previously due to an unrelated error
matching. This corrects the XFAIL annotation to fix the test on
rebranch.
2023-09-15 15:36:07 -07:00
Saleem Abdulrasool
a3df6f64dd test: adjust tests for Windows after the rebranch
This corrects the name decoration and splits the windows and itanium
decoration schemes.  This allows us to un-XFAIL some of the interop
tests on Windows while repairing the failures identified on rebranch.
2023-09-15 11:16:11 -07:00
Egor Zhdan
f7c2257f51 Revert "Revert "[cxx-interop] Import custom NS_OPTIONS correctly""
This reverts commit e1d70f06e7.
2023-09-15 13:57:59 +01:00
Egor Zhdan
6a3defdfb0 Revert "Revert "[cxx-interop] Use up-to-date definition of CF_OPTIONS in tests""
This reverts commit e1a9be2203.
2023-09-15 13:57:25 +01:00
swift-ci
1b4375ff33 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-12 17:00:25 -07:00
Alex Lorenz
90cfbd6c1f Merge pull request #68383 from hyp/eng/109417079
[interop] do not synthesize special members for C++ records with inco…
2023-09-12 16:40:38 -07:00
swift-ci
280d3986c7 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-12 08:39:38 -07:00
zoecarver
e1a9be2203 Revert "[cxx-interop] Use up-to-date definition of CF_OPTIONS in tests"
This reverts commit f20617be0c.
2023-09-11 15:38:42 -07:00