Commit Graph

184973 Commits

Author SHA1 Message Date
Erik Eckstein
7f6fb74418 SILBridging: move BridgedInstruction.OptionalInt -> BridgedOptionalInt in BasicBridging.h 2025-05-15 21:29:02 +02:00
Anthony Latsis
bee2b6778e TypeCheckType: Do not emit migration mode diags if nonisolated(nonsending) is explicit
This broke when we split `@execution(...)` into `@concurrent` and
`nonisolated(nonsending)` because the latter became its own `TypeRepr`,
whereas the condition for whether to attempt migration diagnostics
inside `resolveASTFunctionType` is still based on the function type's
attributes alone.
2025-05-15 20:18:28 +01:00
Anthony Latsis
d90c7cb57a DiagnosticEngine: Fix attribute insertion location for closures with capture lists 2025-05-15 20:17:42 +01:00
Steven Wu
531227d4b9 [Caching] Clear benign CodeGen options when building modules
Use `resetBenignCodeGenOptions()` from clang dependency scanner to clear
the swift explicit module build cc1 arguments. This fixes the problem
that CurrentWorkingDirectory is leaking through
`-fcoverage-compilation-dir` that can cause extra module variants when
caching is enabled. This also avoid the duplicating the logics for
clearing CodeGen options inside Swift.

rdar://151395300
2025-05-15 11:45:21 -07:00
Rintaro Ishizaki
a0aad5c0b0 Merge pull request #81517 from rintaro/macros-wait-rdar150474701
[Macros] Mitigate plugin process 'wait' failure
2025-05-15 11:06:18 -07:00
Alastair Houghton
7f97e8d10b Merge pull request #81472 from al45tair/eng/PR-151147606
[Concurrency] Add underscore prefixes for not yet official API.
2025-05-15 18:39:21 +01:00
Dario Rexin
a904fee7fe [IRGen] Don't set HasLayoutString flag on non-copyable generic types
rdar://151176697

While generic types generally have layout strings (when enabled), non-copyable types don't, so
we have to make sure the flag does not get set.
2025-05-15 10:21:22 -07:00
Slava Pestov
be860a8e9c AST: Fix latent bug in TypeTransformer::transformPackElementType() 2025-05-15 12:22:21 -04:00
Slava Pestov
fe31c61b14 AST: Remove stray assert
A pack archetype from an outer expansion here is treated as a scalar.
2025-05-15 12:22:21 -04:00
Slava Pestov
b2e2b02a71 IRGen: Fix out-of-order task_dealloc with parameter pack metadata
We deallocate an instruction's packs at points where no further
control flow path uses the value. In the case of an alloc_stack,
this will be right after the dealloc_stack. Thus, if alloc_stack
allocates some packs to build type metadata for a tuple type
that contains a pack, and then proceeds to allocate a value
large enough to hold the tuple, we will free the second allocation
first, before we free the pack, as expected.

However, after stack allocating the value, alloc_stack does
some further work to emit debug info. This could result in
emission of additional metadata packs.

Split up the debug info emission into two parts; the first we do
before we perform the stack allocation, the rest we do after.

- Fixes https://github.com/swiftlang/swift/issues/67702.
- Fixes rdar://problem/141363236.
2025-05-15 12:22:21 -04:00
Justice Adams
758ae18063 [cmake] add FindSwiftCore module for supplemental libraries (#81215)
Add FindSwiftCore to Supplemental cmake modules so we can link against
libswiftCore in a given end users SDK if `SwiftCore_DIR ` is not
provided
2025-05-15 10:55:48 -05:00
Pavel Yaskevich
917524de94 Merge pull request #81496 from xedin/inheritActorContext-alwayse
[AST/Sema/SIL] Implement `@_inheritActorContext(always)`
2025-05-15 08:17:30 -07:00
Alastair Houghton
b2f0d92eaa [Cxx] Build the C++ interop support library for the Static SDK for Linux.
We need the C++ interop support library to make the build work, as
the Runtime module uses C++ interop.

(Also, we should build it, because some user programs might want to
use C++ interop.)

rdar://147201087
2025-05-15 14:30:12 +01:00
Slava Pestov
ccaf7e149f Merge pull request #81522 from slavapestov/fix-rdar151162470
AST: Fix two bugs with SelfProtocolConformance
2025-05-15 07:44:35 -04:00
Alex Hoppen
f11f343358 Remove Alex Hoppen as a code owner 2025-05-15 11:09:54 +02:00
Mykola Pokhylets
3e0de8672a Removed the feature and made changes unconditional 2025-05-15 10:52:09 +02:00
Alex Hoppen
5856ec09f8 Merge pull request #81507 from ahoppen/allow-disabling-implicit-cancellation
[SourceKit] Allow passing `cancel_on_subsequent_request: 0` for all requests that use a OncePerASTToken
2025-05-15 10:39:24 +02:00
Mykola Pokhylets
5a69c8ebdb Added REQUIRES: swift_feature_WeakLet 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
8c37d25db9 Added tests for let properties to Mirror 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
26106107eb Updated existing tests to run with feature enabled 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
81da20f63c Enable warnings about never mutated weak var. 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
b7b70f87ee Added unit tests for Sema 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
8af42c21b5 Make sure immutable weak captures are captured by without boxing 2025-05-15 10:26:27 +02:00
Mykola Pokhylets
49b706a811 Added experimental feature to allow weak let and immutable weak captures 2025-05-15 10:26:26 +02:00
Pavel Yaskevich
a8c538937a Merge pull request #81418 from xedin/rdar-130168104
[Concurrency] Diagnose loss of global actor isolation in async functi…
2025-05-15 01:00:43 -07:00
eeckstein
0d3edd629b Merge pull request #81502 from eeckstein/debug-info-in-embedded
embedded: fix source location of diagnostics which appear in imported modules
2025-05-15 06:58:54 +02:00
Slava Pestov
52afa15a74 AST: Fix two bugs with SelfProtocolConformance
There were two problems that have been there for years:

- SubstitutionMap::lookupConformance() assumes that every concrete conformance
  in the path has a root normal conformance. But calling getRootNormalConformance()
  on a self conformance would assert.

- SelfProtocolConformance::getAssociatedConformance() was not implemented. While
  self-conforming protocols do not have associated types, they can inherit from
  other protocols, and we model this with an associated conformance requirement
  having a subject type of `Self`.

Both problems were hidden by the fact that ProtocolConformanceRef::subst()
directly handled self-conforming existentials without calling into the
substitution map. But that is the wrong place for other reasons. The refactoring
in a209ff8869 exposed both of the above issues.

Fixes rdar://problem/151162470.
2025-05-14 23:34:53 -04:00
Pavel Yaskevich
17b8f7ef12 [Sema] Validate that @_inheritActorContext is used only on @Sendable/sending and async/@isolated(any) parameters 2025-05-14 20:08:00 -07:00
Pavel Yaskevich
6c911f5d42 [SIL] Add isolation captured by @_inheritActorContext(always) while lowering captures
`getLoweredLocalCaptures` seems the best place to do it because
during Sema there is a chicken and an egg situation where isolation
depends on captures and in this case captures depend on isolation.
2025-05-14 20:08:00 -07:00
Pavel Yaskevich
a4f6d710cf [Sema] Start propagating @_inheritActorContext(always) attribute to closures 2025-05-14 20:08:00 -07:00
Pavel Yaskevich
c0aca5384b [ASTGen] Transform @_inheritActorContext into a custom attribute with an optional modifier 2025-05-14 20:07:59 -07:00
Pavel Yaskevich
c050e8f75a [AST] Protect declarations with @_inheritActorContext(always) by a feature flag
This is going to avoid condfails when declarations are printed
in the swiftinterface files.
2025-05-14 20:07:59 -07:00
Pavel Yaskevich
04d46760bb [AST] Extend @_inheritActorContext attribute to support optional always modifier
By default (currently) the closure passed to a parameter with `@_inheritActorContext`
would only inherit isolation from `nonisolated`, global actor isolated or actor
context when "self" is captured by the closure. `always` changes this behavior to
always inherit actor isolation from context regardless of whether it's captured
or not.
2025-05-14 20:07:57 -07:00
Becca Royal-Gordon
36de3a85e9 Merge pull request #81459 from beccadax/mod-squad-serialize 2025-05-14 19:25:22 -07:00
Alexis Laferrière
4f71913f39 PrintAsObjC Tests: Update users of -emit-clang-header-nonmodular-include 2025-05-14 16:04:37 -07:00
Alexis Laferrière
c0889d57c3 PrintAsClang: Print #include for headers used from @cdecl functions
Start printing `#include` for headers referenced from `@cdecl` function
signatures. This adds on top of the existing tiered imports. We already
print each module referenced from decls printed in the compatibility
header. Previously we printed mostly `@import` with an option to
fallback on a `#import`. This change adds a third fallback to `#include`
when the module is referenced from a `@cdecl` function signature. The
bridging header can also be imported in a similar way.
2025-05-14 16:04:37 -07:00
Steven Wu
f2ef2d3d86 Merge pull request #81494 from cachemeifyoucan/eng/PR-remove-clang-module-cas-fs
[Caching] Remove CASFS based clang module implementation
2025-05-14 15:55:17 -07:00
Anthony Latsis
0777dbd4d8 Merge pull request #81284 from AnthonyLatsis/no-warnings-asserts
[presets] Escalate C++ "unused" warnings in macOS smoke test
2025-05-14 23:24:37 +01:00
Meghana Gupta
8c5fae087d Merge pull request #81499 from meg-gupta/fixdropdeinit
Fix InstructionDeleter for drop_deinit instruction
2025-05-14 15:22:05 -07:00
Alexis Laferrière
ef84f0e1aa Sema: Update more diagnostics for @cdecl vs @objc 2025-05-14 13:13:03 -07:00
Rintaro Ishizaki
4a62ef86d4 [Macros] Terminate macro plugin
Instead of expecting the plugin read `EOF` and exit, proactively
terminate the plugin and `wait` to reap it.
2025-05-14 13:09:43 -07:00
Alexis Laferrière
bb99891648 Sema: Use ForeignLanguage directly in diagnostic definitions 2025-05-14 12:54:33 -07:00
Rintaro Ishizaki
05948bcb93 [Macros] 'close' unnecessary file descriptors in plugin process
Close all the pipe file descriptors in the child process after duping
them to the standard I/O. This is not necessary but it's a good thing to
do anyway.
2025-05-14 12:54:26 -07:00
Rintaro Ishizaki
be25ea2584 [Macros] Mitigate plugin process 'wait' failure
Previously, the compiler waited the plugin process with
`llvm::sys::Wait(pid, /*SecondsToWait=*/1)`. But in the `Wait`
implementation, it sets the `alarm(SecondsToWait)`, then
`wait4(pid, ..)` so if the alarm fires before the `wait4` call,
it may miss the timeout and can wait indefinitely. To mitigate that
risk,use `10` for the timeout value.

rdar://150474701
2025-05-14 12:38:28 -07:00
Evan Wilde
9993d295fa Merge pull request #81491 from etcwilde/ewilde/enable-commandline-by-default
Runtimes: Enable CommandLine support wholesale
2025-05-14 12:02:18 -07:00
Becca Royal-Gordon
b6be85222f Standardize serialization of DeclNameRefs
There are four attributes which serialize out a DeclNameRef, sometimes by dropping some of its components. Standardize them with a representation that can handle module selectors.
2025-05-14 11:16:30 -07:00
Becca Royal-Gordon
e71f837b1f [NFC] Stub module selector DeclNameRef/Loc members 2025-05-14 11:16:02 -07:00
Becca Royal-Gordon
d48ff3545d [NFC] Give withoutArgumentLabels() a context arg
It will soon need to allocate sometimes.
2025-05-14 11:16:02 -07:00
Becca Royal-Gordon
c3a61bee0e Add experimental feature for module selector 2025-05-14 11:16:02 -07:00
Meghana Gupta
16d1eadd5d Fix InstructionDeleter for drop_deinit instruction
Currently we delete dead drop_deinit instructions in InstructionDeleter.
For address results, we may end up with ownership errors after being promoted to value forms.
For value results, fixLifetimes mode of InstructionDeleter will insert an illegal destroy_value

rdar://151104993
2025-05-14 10:43:59 -07:00