Commit Graph

15 Commits

Author SHA1 Message Date
Kavon Farvardin 45fad55994 SILGen: fix mismatch in expectations of substitution map
The backdeployment thunk is calling into a method within a
constrained extension, but it's constrained the generic
parameter to a fixed type.

So, there is no invocation generic signature, thus no
substitution map is expected by the assertion added in
https://github.com/swiftlang/swift/pull/88160

resolves rdar://174437884
2026-04-09 14:14:35 -07:00
Arnold Schwaighofer 9bda9c73a0 [CoroutineAccessors] [SILGen] Fix emitBackDeployForwardApplyAndReturnOrThrow for yield_once_2 coroutines
They have an stack allocation result and the token result is at a different index.

rdar://168937038
2026-01-26 11:49:50 -08:00
Slava Pestov 819738c83e AST: Rename mapTypeIntoContext() => mapTypeIntoEnvironment(), mapTypeOutOfContext() => mapTypeOutOfEnvironment() 2025-11-12 14:48:19 -05:00
Allan Shortlidge 88bc79f6af AST: Remove unnecessary ASTContext argument.
There's no need to take one as input to a method on `Decl`. NFC.
2025-10-24 16:20:02 -07:00
Anthony Latsis 26540ca439 SIL: Do not use -1 to construct a 1-bit llvm::APInt
A -1 truncated to 1 bit is just 1, so stop overcomplicating things here.
2025-08-27 12:41:10 +01:00
Allan Shortlidge b4fb7c81c0 AST: Refactor AvailabilityQuery constructors.
Get rid of the boolean arguments for unavailability in AvailabilityQuery's
constructors and introduce a `asUnavailable()` modifier that can be used
instead in the contexts where unavailability is relevant.
2025-08-06 18:01:44 -07:00
Allan Shortlidge aa199aaf81 Correct misspelling of "availability" in a few places. 2025-07-25 21:30:53 -07:00
Allan Shortlidge fbe686d37d SILGen: Fix an assert when emitting SIL for if #available.
Empty version numbers if availability specs are accepted by Sema prior to Swift
6, and when they occur in `if #available` queries they can make the query AST
node invalid without aborting compilation. Adjust an assertion in SILGen to
compensate.
2025-07-14 11:07:40 -07:00
Allan Shortlidge 6e08b8980f SILGen: Refactor emission of availability checks.
Generalize SILGen for `if #available` checks by delegating the determination of
the query function and its arguments to `AvailabilityQuery`. Update SILGen for
`@backDeployed` thunks to use the same infrastructure.

NFC.
2025-07-06 19:44:53 -07:00
Allan Shortlidge a4f59f9481 AST: Return @backDeployed attribute along with version from Decl query.
Also, introduce a convenience on `BackDeployedAttr` for getting its associated
`AvailabilityDomain`.

NFC.
2025-07-06 19:44:53 -07:00
Allan Shortlidge ede7bdb5d7 Merge pull request #82671 from tshortli/zippered-miscompile-if-unavailable
SILGen: Fix `if #unavailable` mis-compile for zippered libraries
2025-07-02 16:05:51 -07:00
John McCall 834b606c13 Correctly forward the implicit nonisolated(nonsending) parameter in thunks (#82705)
Also, I discovered that we don't apply nonisolated(nonsending) to
function types in the new mode. That's one for a different patch.

Fixes rdar://154401813 and rdar://154137740
2025-07-02 12:03:59 -07:00
Allan Shortlidge 4a76c04cf5 SILGen: Fix if #unavailable mis-compile for zippered libraries.
Inverted availability queries were mis-compiled for zippered libraries because
the code that emits calls to `isOSVersionAtLeastOrVariantVersionAtLeast()` was
not updated when the `if #unavailable` syntax was introduced (at that time
support for zippered libraries had not yet been upstreamed). The result of
these calls is now inverted when appropriate.

To make it easier to manage the growing complexity of supporting availability
queries, Sema now models the relevant information about an availability query
with the new `AvailabilityQuery` type. It encapsulates the domain for the
query, the result if it is known at compile time, and the version tuple
arguments to pass to a runtime invocation if applicable.

Resolves rdar://147929876.
2025-07-02 11:23:42 -07:00
Allan Shortlidge 39b6c608b0 SILGen: Reorganize code related to availability.
NFC.
2025-06-23 15:57:34 -07:00
Allan Shortlidge 91043271fa SILGen: Rename SILGenBackDeploy.cpp to SILGenAvailability.cpp.
NFC.
2025-06-23 15:57:34 -07:00