Commit Graph

6038 Commits

Author SHA1 Message Date
Kavon Farvardin
dfe3d2a42c Merge pull request #70488 from kavon/ncgenerics-stdlib-building-v2
[NCGenerics] Fix more issues while building the stdlib
2023-12-19 10:19:25 -08:00
Kavon Farvardin
f0e17af495 [NCGenerics] fix _bridgeAnythingToObjectiveC
Now that there's an actual conformance requirement in the generic
signature, we need a real conformance lookup function.
2023-12-18 18:55:56 -08:00
Doug Gregor
6536f57ab5 Merge pull request #70516 from DougGregor/typed-throw-try-bang
[Typed throws] Terminate with an error message for typed try! failures.
2023-12-17 02:41:48 -08:00
Doug Gregor
d740965753 [Typed throws] Terminate with an error message for typed try! failures. 2023-12-16 23:58:51 -08:00
Sima Nerush
2fd5843a79 Merge pull request #70355 from simanerush/pack-iteration-fixes
[SE-0408] Pack iteration review feedback!
2023-12-16 09:50:31 -08:00
Sima Nerush
92d81f340e [SILGen] Improve documentation of SE-0408, put back the documentation that was misplaced. 2023-12-15 20:39:47 -08:00
Joe Groff
58bf935e48 Merge pull request #70475 from jckarter/noncopyable-addressors
Move-only check the value projected from addressors.
2023-12-15 15:35:58 -08:00
Joe Groff
1b9a0712bf Move-only check the value projected from addressors.
Mark the result of a move-only addressor as unresolved. The pointed-at value
cannot be consumed so ensure that only [read] or [modify] accesses are
performed. Update the move-only checker to recognize code patterns
from addressors.
2023-12-15 10:10:44 -08:00
nate-chandler
680c737ddb Merge pull request #64789 from nate-chandler/more-move-values
[SILGen] Used move_value for more lexical values.
2023-12-15 07:07:54 -08:00
Allan Shortlidge
9858f39832 Merge pull request #70472 from tshortli/back-deploy-assertassume-isolation
[SE-0392] Back-deploy assertIsolation/assumeIsolation
2023-12-14 18:42:39 -08:00
Allan Shortlidge
9b6b4b956d SILGen: Consistently use the buildMainActorExecutorRef built-in.
SILGen and IRGen would disagree on the return type of the
`swift_task_getMainExecutor()` runtime function if
`SILGenModule::getGetMainExecutor()` had ever been called. To address this,
consistently use the `buildMainActorExecutorRef` built-in and get rid of
`SILGenModule::getGetMainExecutor()`.

Resolves rdar://116472583
2023-12-14 15:13:46 -08:00
Nate Chandler
e922eb8116 [Gardening] Fixed typo. 2023-12-14 13:35:26 -08:00
Nate Chandler
10ce0c6b16 [SILGen] Used move_value for lexical lets.
Instead of using begin_borrow [lexical] + copy_value.
2023-12-14 13:35:26 -08:00
Nate Chandler
fe1ed5b3a3 [NFC] SILGen: Inverted control flow.
Used the main body of the function for the "normal" path.
2023-12-14 09:09:57 -08:00
Nate Chandler
820ca35daf [SILGen] Used move_value for @noImplicitCopy.
Replace the pattern of begin_borrow [lexical] + copy_value with
move_value [lexical] to avoid introducing a spurious copy to begin with.
2023-12-14 09:08:55 -08:00
Doug Gregor
e1be9c312b Eliminate the DeclContext from ExplicitCaughtTypeRequest
Correctly determining the DeclContext needed for an
ExplicitCaughtTypeRequest is tricky for a number of callers, and
mistakes here can easily lead to redundant computation of the caught
type, redundant diagnostics, etc.

Instead, put a `DeclContext` into `DoCatchStmt`, because that's the
only catch node that needs a `DeclContext` but does not have one.
2023-12-13 11:42:56 -08:00
Alejandro Alonso
f365316d74 Merge pull request #70327 from Azoy/inject-get-enum-tag-builtins
[IRGen] Add getEnumTag and injectEnumTag builtins
2023-12-12 16:07:56 -08:00
Joe Groff
957443e16c Merge pull request #70404 from jckarter/modify-coroutines-yielding-noncopyable-values
Move-only-check the result of modify coroutines.
2023-12-12 14:38:48 -08:00
Joe Groff
a0b133020c Merge pull request #70333 from jckarter/read-coroutines-yielding-noncopyable-values
Move-only-check the yielded result from read coroutines when they're noncopyable.
2023-12-12 09:35:39 -08:00
Joe Groff
18e31157fd Move-only-check the result of modify coroutines.
Following https://github.com/apple/swift/pull/70333, do the same thing for
modify coroutines, marking the result so that we check uses of the result to
ensure it isn't consumed (without being reinitialized).
2023-12-12 09:02:24 -08:00
Konrad `ktoso` Malawski
828f589be4 Initial Task Executor implementation Task(on:), addTask(on:) etc. (#68793)
Co-authored-by: John McCall <rjmccall@gmail.com>
2023-12-12 17:14:24 +09:00
Alejandro Alonso
49b0a23561 Add getEnumTag and injectEnumTag builtins 2023-12-11 10:58:29 -08:00
Joe Groff
96c87dbf81 Move-only-check the yielded result from read coroutines when they're noncopyable.
Mark the result of starting a read coroutine to be checked by the move-only checker, and then
update the pattern matching in the move checker itself so that it recognizes code patterns
involving yielding from and receiving yields from read coroutines. Teach move only diagnostics
to get the property name for an access through a read coroutine from the referenced declaration.
2023-12-11 10:54:52 -08:00
Allan Shortlidge
84ba63632f Merge pull request #70363 from tshortli/silgen-skip-non-exportable-property-wrapper-backing-inits
SILGen: Skip emitting non-exportable property wrapper backing inits
2023-12-10 19:23:41 -08:00
Allan Shortlidge
5b95737a69 SILGen: Skip emitting non-exportable property wrapper backing inits.
When `-experimental-skip-non-exportable-decls` is specified, skip emitting
property wrapper backing inits since they cannot be referenced directly by
module clients.

Resolves rdar://119469651
2023-12-10 16:33:34 -08:00
Slava Pestov
026d3f0078 Merge pull request #70311 from slavapestov/type-witness-system-inference-stdlib
Get the standard library to build with -enable-experimental-associated-type-inference
2023-12-10 17:50:33 -05:00
Allan Shortlidge
13a1861a1f SILGen: Don't skip functions nested in closures in inlinable functions.
The logic for walking up the tree of DeclContexts did not handle closures
correctly.

Resolves rdar://119350220
2023-12-07 18:24:37 -08:00
Sima Nerush
b6d0afba1f Merge pull request #67594 from simanerush/simanerush/pack-iteration-impl
[SE-0408] Enable Pack Iteration
2023-12-07 17:09:48 -08:00
Slava Pestov
5dd8307e60 AST: Pass SubstOptions to DependentMemberType::substBaseType() 2023-12-07 18:00:50 -05:00
Meghana Gupta
9a4bb7337a Merge pull request #70263 from meg-gupta/resultdependson
Add support for _resultDependsOn
2023-12-06 22:12:23 -08:00
Doug Gregor
12cb8becc6 Merge pull request #70283 from DougGregor/typed-try-force-and-opt 2023-12-06 21:26:50 -08:00
Meghana Gupta
b6326f5f24 Add initial support for _resultDependsOn
These attributes are used to establish lifetime dependence between
argument and the result.

Add them under NonEscapableTypes experimental feature
2023-12-06 16:38:38 -08:00
Doug Gregor
00d7e41513 [Typed throws] Always convert error to destination type in calls
An attempted SILGen optimization caused assertions and SIL verification
errors. Always convert the error appropriately.

Fixes rdar://119214492.
2023-12-06 15:32:29 -08:00
Meghana Gupta
d00574369a Merge pull request #70242 from meg-gupta/unrevertarrayfix
Unrevert #69450 - Add a mark_dependence while emitting SIL for uninitialized array allocation
2023-12-06 11:28:10 -08:00
Meghana Gupta
86b651330b Revert "Merge pull request #69807 from apple/revert-69450-uninarrayfix"
This reverts commit cabb5e109f, reversing
changes made to 09688abb02.
2023-12-06 08:29:50 -08:00
Erik Eckstein
bfeb2128cb remove default value for the keepUnique argument of Builder.createEndCOWMutation
This avoids bugs because the default value false is sometimes not the right choice.
NFC
2023-12-06 15:40:08 +01:00
Meghana Gupta
6442e914a0 Merge pull request #70244 from meg-gupta/removeselfaccesskind
Remove SelfAccessKind::ResultDependsOnSelf
2023-12-05 18:30:32 -08:00
Sima Nerush
be212badbd Add break/continue support 2023-12-03 21:51:40 -08:00
Sima Nerush
af56beb60e Add for case support and tests 2023-12-03 21:51:40 -08:00
Sima Nerush
6ab831043d SIL 2023-12-03 21:51:40 -08:00
Doug Gregor
cfe2b3c87d [Typed throws] Implement support for do throws(...) syntax
During the review of SE-0413, typed throws, the notion of a `do throws`
syntax for `do..catch` blocks came up. Implement that syntax and
semantics, as a way to explicitly specify the type of error that is
thrown from the `do` body in `do..catch` statement.
2023-12-02 07:37:47 -08:00
Robert Widmann
db28fc8adb Merge pull request #70100 from CodaFi/cereal-milk
Don't Serialize Declarations with `package` Access
2023-12-01 13:48:21 -07:00
Felipe de Azevedo Piovezan
ac85703039 Merge pull request #70111 from felipepiovezan/felipe/fix_incorrect_debug_loc
[DebugInfo][SILGen] Ensure "guard let" is lowered with a non-implicit location
2023-11-30 19:34:02 -08:00
Felipe de Azevedo Piovezan
8baf933114 [DebugInfo][SILGen] Ensure "guard let" is lowered with a non-implicit location
Prior to this patch, a "guard let" was being lowered with an implicit debug
location, causing it to be dropped in later stages of the compiler, and making
it impossible to set a breakpoint in that line.

This was tracked down to a piece of code in `SILGenFunction::emitExprInto`,
which takes an optional Location parameter that was being ignored in one code
path.
2023-11-30 09:14:36 -08:00
Robert Widmann
a987ba48d0 Don't Serialize Declarations with package Access
This accidentally started happening when I adjusted getEffectiveAccess to return `Public` for `Package` declarations in #69709. As a result, the optimizer thought it had more opportunities to go after declarations that used to be opaque. Unfortunately, this resulted in a miscompile as the devirtualizer was able to look through now-serialized package (static) functions. In one specific instance, the optimizer created direct calls to hidden accessors instead of going through the dispatch thunk.
2023-11-29 14:09:48 -07:00
Meghana Gupta
fd588ab509 Remove SelfAccessKind::ResultDependsOnSelf 2023-11-29 12:11:57 -08:00
Pavel Yaskevich
c9a8355c26 [AST] Add a way to retrieve key path and its root/value types from KeyPathExpr 2023-11-28 13:02:17 -08:00
nate-chandler
126022f6e9 Merge pull request #70054 from nate-chandler/rdar118059326
[SIL] Key consume checking off var_decl attr.
2023-11-28 11:47:04 -08:00
Doug Gregor
0eb71d1c03 Merge pull request #70034 from DougGregor/function-body-macros
Function body macros
2023-11-28 09:43:40 -08:00
Nate Chandler
9bb0187be1 [SILGen] Add begin_borrow [var_decl] lifetimes. 2023-11-28 07:26:09 -08:00