Michael Gottesman
afd8accb75
[move-only] Add a move only request to lookup if a ValueDecl is a "move only type".
...
I also created a SILType::isMoveOnly() helper that returns true if a type is
a move only wrapped type or a first class move only type. The verifier check
that move only types aren't copied in canonical SIL was rewired to use that as well.
2022-07-21 15:33:17 -07:00
zoecarver
13b0a5bc37
[nfc] Clang format changes.
2022-07-21 17:34:36 -04:00
zoecarver
74d76e2888
[cxx-interop] Add diagnostics and validation for retain/release function; require all foreign reference types to provide retain release functions or be immortal.
2022-07-21 12:25:21 -04:00
zoecarver
c9f54e1417
[nfc] Rename CxxCustom -> Custom and fix comments based on review feedback.
2022-07-21 10:25:57 -04:00
zoecarver
4021082a55
[wip][cxx-interop] Support for custom reference counting operations.
2022-07-21 10:25:57 -04:00
Pavel Yaskevich
225341e3d2
[Decl] Start storing and serializing "unavailability" bit per condition
2022-07-20 13:26:43 -07:00
Anton Korobeynikov
6e2c4faa34
[AutoDiff] Lookup for custom derivatives in non-primary source files ( #58965 )
...
* Lookup for custom derivatives in non-primary source files after typecheck is finished for the primary source.
This registers all custom derivatives before autodiff transformations and makes them available to them.
Fully resolves #55170
2022-07-18 11:52:02 -07:00
Konrad `ktoso` Malawski
728c007fb9
[Distributed] Implement witnesses for sync or non-throw dist reqs
...
[Distributed] generic and inner test; without one edge case
[Distributed] fix distributed_thunk test; unsure about those extra hops, could remove later
[Distributed] Remove type pretending in getSILFunctionType; it is not needed
It seems our constant replacement in the earlier phases is enough, and
we don't need this trick at all.
[Distributed] Use thunk when calling cross-actor on DA protocols
2022-07-04 19:02:11 +09:00
swift-ci
9aa2de4137
Merge pull request #41083 from kavon/inconvenienced-actors
...
[SE-327] Remove need for `convenience` for delegating initializers of an actor.
2022-06-30 14:56:32 -07:00
Konrad `ktoso` Malawski
ef525424f6
Merge pull request #59700 from xedin/distributed-computed-properties-via-accessor-thunk
...
[Distributed] Implement distributed computed properties via special accessor
2022-06-30 16:04:36 +09:00
Pavel Yaskevich
8d9962e605
[Distributed] Allow requesting distributed thunks on AbstractStorageDecl
...
One step towards future distributed subscripts.
2022-06-29 14:49:10 -07:00
Pavel Yaskevich
e8987b4c3e
[Distributed] Add a new access strategy - DispatchToDistributedThunk
...
This strategy is used to dispatch accesses to 'distributed' computed
property to distributed thunk accessor instead of a regular getter
when access happen outside actor isolation context.
2022-06-29 14:49:10 -07:00
Pavel Yaskevich
fce3b856e3
[AST] Add new member access semantics - DistributedThunk
...
`DistributedThunk` is to be used while accessing 'distributed'
computed property outside of its actor context.
2022-06-29 14:49:10 -07:00
Pavel Yaskevich
5bdf94f346
[Distributed] Remove commented out code and print statements
2022-06-29 14:49:10 -07:00
Konrad `ktoso` Malawski
febfef97d4
[Distributed] Skeleton implementation of distributed computed properties
2022-06-29 14:49:04 -07:00
Allan Shortlidge
2515f7a58d
Frontend: Introduce the -enable-experimental-ad-hoc-availability flag.
...
When developing a module for an OS or SDK, one may use declarations from other modules that were recently introduced in the in-development OS. Those declarations will be annotated as available at the deployment target of the client module and yet the symbols for that declaration are not available in all development builds of that OS. If the module strongly links those symbols, it will crash on older development builds of the OS. The `-enable-experimental-ad-hoc-availability` flag is designed to give developers the option of weakly linking all symbols in other modules that were introduced at the deployment target.
This change introduces the basic change in linking behavior but does not address typechecking. Use of the declarations that are made unavailable in this mode will need to be diagnosed and developers will need a way to detect the unavailability at runtime before use.
Resolves rdar://96011550
2022-06-29 11:44:07 -07:00
Pavel Yaskevich
add41afc47
[AST] Teach computeNominalType about nested ObjC protocols
...
Objective-C protocols unlike their Swift counterparts could be
nested in other types, so `computeNominalType` has to fetch a
parent for such protocols (if any) just like importer does.
Resolves: rdar://95084142
2022-06-28 12:06:26 -07:00
Kavon Farvardin
25b69d1e6e
make sure all actor kinds, including distributed, are "semantically final"
2022-06-27 15:45:52 -07:00
Konrad `ktoso` Malawski
e78a7cbacb
[Decl] remove not used and bad-idea isIsolated function
2022-06-22 15:36:43 +09:00
Holly Borla
429488f6c9
[Sema] Use ExistentialType for Any and AnyObject.
2022-06-17 18:29:15 -07:00
Konrad `ktoso` Malawski
0caf03d63f
[Distributed] adjust test to pass with less accurate diagnostics; while we work on getting them back
2022-06-17 12:35:54 -07:00
Pavel Yaskevich
b963c6d20f
[Distributed] Remove commented out code and print statements
2022-06-17 12:12:16 -07:00
Konrad `ktoso` Malawski
5a5b7c007c
towards distributed getters
2022-06-17 12:12:16 -07:00
Konrad `ktoso` Malawski
079bbcf517
wip
2022-06-17 12:12:16 -07:00
Becca Royal-Gordon
102f9a30c2
[NFC] Add isKnownObjC param to RenamedDeclRequest
...
This will be used to break cycles in a future commit.
2022-06-16 14:06:47 -07:00
Doug Gregor
774a94f69d
Make sure we can dig out the (distributed) actor from an archetype.
...
Fixes #59356 / rdar://94976378.
2022-06-14 10:57:29 -07:00
Konrad `ktoso` Malawski
bd052eedd7
improve FIXME to link to issue
2022-06-10 13:41:37 +09:00
Anton Korobeynikov
a1e138b2af
[AutoDiff] Implement cross-file lookup of derivatives ( #58644 )
...
Look-up for functions with @derivative attributes defined in non-primary source files
Fixes #55170
2022-05-11 08:18:51 -07:00
Alex Hoppen
f5c0c9cb35
[CodeCompletion] Maintain LeaveClosureBodiesUnchecked when checking pattern binding
...
Before, we were dropping `LeaveClosureBodiesUnchecked` when checking a pattern binding request which caused missing completions inside variables initialized by closures.
rdar://92603748 [#58610 ]
2022-05-04 16:08:48 +02:00
Josh Soref
81d3ad76ac
Spelling ast ( #42463 )
...
* spelling: accessor
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: accommodates
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: argument
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: associated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: availability
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: available
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: belongs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: bookkeeping
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: building
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clazz
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clonable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: closure
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: concatenated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conformance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: context
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conversion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: correspondence
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declarations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declared
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: defining
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: delayed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: dependency
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: deployed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: descendants
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: diagnose
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: diagnostic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equitable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: evaluation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: exclusivity
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: existence
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: existential
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: explicit
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: expressed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: for
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: foreign
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: function
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: identifier
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: implicit
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indices
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: information
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interchangeable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interface
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: introduced
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: invalid
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: kind-in
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: least
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: library
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: location
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: namespace
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: necessary
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: nonexistent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: not
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: number
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: obtains
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: occurs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: opaque
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: overridden
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameter
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: precede
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: preceding
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: property
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: protocol
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: qualified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recognized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recursively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: references
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: relaxing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: represented
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: request
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: requirement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: requirements
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: retrieve
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: returned
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: satisfied
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: satisfy
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scanner
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: siblings
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: simplified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: something
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: source
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specializations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specially
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: statement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: stripped
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: structure
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substitution
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transform
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transformed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transitively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transparent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: typecheck
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unknown
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unlabeled
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unqualified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: whether
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: with
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scanner
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-21 12:57:16 -07:00
Doug Gregor
4116d7a3d7
Rename the -strict-concurrency= options to be more descriptive.
...
The three options are now:
* `explicit`: Enforce Sendable constraints where it has been explicitly adopted and perform actor-isolation checking wherever code has adopted concurrency. (This is the default)
* `targeted`: Enforce Sendable constraints and perform actor-isolation checking wherever code has adopted concurrency, including code that has explicitly adopted Sendable.
* `complete`: Enforce Sendable constraints and actor-isolation checking throughout the entire module.
2022-04-20 18:17:33 -07:00
Doug Gregor
12a11e5416
Merge pull request #42445 from DougGregor/strict-concurrency-flag
2022-04-19 08:07:30 -07:00
Doug Gregor
7a724c4586
Add frontend flag -swift-concurrency={off|limited|on}
...
Replace `-warn-concurrency` with a more granular option
`-swift-concurrency=`, where the developer can select one of three
different "modes":
* `off` disables `Sendable` checking for most cases. (This is the Swift
5.5 and Swift 5.6 behavior.)
* `limited` enables `Sendable` checking within code that has adopted
Swift concurrency. (This is currently the default behavior.)
* `on` enables `Sendable` and other concurrency checking throughout
the module. (This is equivalent to `-warn-concurrency` now).
There is currently no distinction between `off` and `limited`. That
will come soon.
Implements the flag part of rdar://91930849.
2022-04-18 18:12:10 -07:00
Luciano Almeida
0005c1f3c3
[AST] Consider async let _: <Type> and async let _ = when checking for async let in pattern binding decl
2022-04-17 14:06:39 -03:00
Slava Pestov
6982b90c6e
Serialization: Round-trip primary associated type list
2022-04-16 22:36:29 -04:00
Pavel Yaskevich
4ecc05d276
Merge pull request #42264 from xedin/err-in-default-expr
...
[TypeChecker] Fix a crash in inherited default argument type-checking
2022-04-08 19:24:50 -07:00
Pavel Yaskevich
8f55238f16
[TypeChecker] Fix a crash in inherited default argument type-checking
...
In some circumstances request for default type is made before
inherited constructor has been validated and storage has been
allocated for invalid type which then triggered a crash during
declaration checking.
2022-04-08 12:22:01 -07:00
Doug Gregor
eef2704c86
Reimplement actor isolation checking for referencing a declaration.
...
Start collapsing the several implementations of actor isolation checking
into a single place that determines what it means to reference a declaration
from a given context, potentially supplying an instance for an actor. This
is partly cleanup, and partly staging for the implementation of the
Sendable restrictions introduced in SE-0338. The result of this check
falls into one of three categories:
* Reference occurs within the same concurrency domain (actor/task)
* Reference leaves an actor context to a nonisolated context (SE-0338)
* Reference enters the context of the actor, which might require a
combination of implicit async, implicit throws, and a "distributed" check.
Throughout this change I've sought to maintain the existing semantics,
even where I believe they are incorrect. The changes to the test cases
are not semantic changes, but reflect the unification of some
diagnostic paths that changed the diagnostic text but not when or how
those diagnostics are produced. Additionally, SE-0338 has not yet been
implemented, although this refactoring makes it easier to implement
SE-0338.
Use this new actor isolation checking scheme to implement the most
common actor-isolation check, which occurs when accessing a member of
an instance.
2022-04-07 09:07:36 -07:00
Anthony Latsis
15839ffba6
Merge pull request #42049 from AnthonyLatsis/dyn-self-inherit
...
findGenericParameterReferences: Do better at honoring 'treatNonResultCovarianceAsInvariant' and 'hasCovariantSelfResult'
2022-04-07 09:07:16 +03:00
swift-ci
6af73245c6
Merge pull request #42136 from ktoso/wip-identifiable-synthesis-fix
...
[Distributed] ID synthesis must be eager, or we run into issues in real projects
2022-04-04 02:51:22 -07:00
Slava Pestov
8c47cd75fd
Sema: The primary associated type list references existing associated types instead of declaring new ones
2022-04-03 22:03:49 -04:00
Konrad `ktoso` Malawski
c88951354f
[Distributed] ID synthesis must be eager, or we run into issues in real projects
2022-04-01 18:47:25 +09:00
Anthony Latsis
4c2e88b207
Merge pull request #41849 from AnthonyLatsis/dyn_unbound_ref
...
CS: Handle unbound references to @objc optional methods
2022-03-31 04:01:20 +03:00
Pavel Yaskevich
c143c55989
[AST] OpaqueDecl: Simplify storage of conditionally available alternatives
...
Instead of using a special type with a set of trailing objects, let's
just re-allocate array of substitutions into a permanent storage directly.
2022-03-29 21:52:15 -07:00
Anthony Latsis
def23f45a1
findGenericParameterReferences: Do better at honoring 'treatNonResultCovarianceAsInvariant' and 'hasCovariantSelfResult'
2022-03-29 13:10:49 +03:00
Pavel Yaskevich
67311e5465
[AST] Augment OpaqueTypeDecl to store conditionally available alternatives
...
In preparation to support cases like this:
```
func test() -> some P {
if #available(...) {
return X()
}
return Y()
}
```
where both `X` and `Y` conform to `P` but are different types.
2022-03-28 16:22:08 -07:00
Anthony Latsis
f25725279e
[NFC] CSApply: Introduce a generalized routine for building single curry thunk bodies
2022-03-26 18:28:20 +03:00
Pavel Yaskevich
5b9b4977e0
[TypeChecker] SE-0347: Avoid type inference from caller-site defaults
...
Such default expressions are injected as an argument to each call site,
so they cannot participate in inference at declaration site.
2022-03-25 13:10:04 -07:00
Konrad `ktoso` Malawski
8d3e7d91c0
[Distributed] ResultHandler.onReturn must be ad-hoc because SerializationRequirement ( #41916 )
...
* [Distributed] Invoke handler.onReturn ad hoc via ast synthesized func
* reformat and cleanup
* remove unused var
2022-03-24 21:44:37 +09:00
Doug Gregor
38c9d2e8dd
Merge pull request #41992 from DougGregor/implicit-existential-opening-erase-or-reject
2022-03-23 21:03:54 -07:00