Pavel Yaskevich
39f5b69bce
[TypeChecker] Synthesize initializer for a type wrapped declaration
...
Synthesize an `init` declaration which is going to initialize
type wrapper instance property `$_storage` via user provided
values for all stored properties.
2022-08-26 12:25:22 -07:00
Pavel Yaskevich
3dc441b3d3
[TypeChecker] Synthesize getters for stored properties of a type wrapped type
...
A getter routes accesses through a subscript of `$_storage` variable
injected into a wrapped type.
2022-08-26 12:25:22 -07:00
Pavel Yaskevich
69d80dc738
[AST] Add a way to check whether type has a type wrapper
2022-08-26 12:25:22 -07:00
Nate Chandler
b3ae13ddbe
[Sema] Added _eagerMove and _lexical attributes.
...
The new attributes affect how the lifetimes of values may be shortened.
2022-08-21 21:44:53 -07:00
Slava Pestov
30c99b573a
AST: Remove ExtensionDecl::alreadyBoundToNominal()
2022-08-05 12:45:00 -04:00
Pavel Yaskevich
5ee5a22cf1
[TypeChecker] NFC: Add a dedicated method to get outermost attached wrapper
...
The outermost wrapper is the one at index `0` in the wrapper list
but it's easy for humans to make a reverse assumption since outermost
is the back of the list. Let's add a dedicated method to reduce error
probability of the property wrapper APIs.
2022-08-04 17:30:02 -07:00
Zoe Carver
bd003bcd7f
Merge pull request #59509 from zoecarver/frt-with-ref-counting
...
[cxx-interop] Add support for reference counting operations on foreign reference types.
2022-07-23 20:51:39 -07:00
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
4021082a55
[wip][cxx-interop] Support for custom reference counting operations.
2022-07-21 10:25:57 -04:00
Pavel Yaskevich
436b75b272
Merge pull request #59951 from xedin/se-360-support-unavailable
...
[TypeChecker] SE-360: Add support for `if #unavailable`
2022-07-20 19:14:25 -07:00
Pavel Yaskevich
225341e3d2
[Decl] Start storing and serializing "unavailability" bit per condition
2022-07-20 13:26:43 -07:00
Slava Pestov
098ffdc053
AST: Remove unnecessary include of Witness.h
2022-07-20 11:52:07 -04: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
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
b2b1efd268
[Distributed] Decl: Add a new distributed-thunk bit
...
The flag is used to distinguish between regular functions/accessors
and synthesized distributed thunks.
2022-06-29 14:49:10 -07:00
Pavel Yaskevich
d68961d407
[Distributed] Synthesize thunks for distributed computed properties
2022-06-29 14:49:10 -07:00
Konrad `ktoso` Malawski
6a2778645f
Revert "Merge pull request #59481 from xedin/distributed-computed-properties"
...
This reverts commit 8125a85a8f , reversing
changes made to 728971c5b7 .
2022-06-25 08:49:00 +09:00
Konrad `ktoso` Malawski
e78a7cbacb
[Decl] remove not used and bad-idea isIsolated function
2022-06-22 15:36:43 +09:00
Pavel Yaskevich
fa2e64c1fd
[Distributed] Sema: Add a new distributed-thunk attribute
...
The attribute comes handy during solution application to
determine whether the call is using a distributed thunk.
2022-06-17 12:35:54 -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
435aa65fbe
[Distributed] Synthesize thunks for distributed computed properties
2022-06-17 12:12:16 -07:00
Becca Royal-Gordon
a4a6d0943a
Merge pull request #59479 from beccadax/you-completion-me
...
Allow @objc protocols to declare async alternatives
2022-06-17 09:58:44 -07:00
Puyan Lotfi
28375ae7df
[c++-interop] Providing information about enum types from inferDefaultArgument
...
When ClangImporter::Implementation::inferDefaultArgument processes
func/method arguments as part of omitNeedlessWordsInFunctionName it
processes information about how the typenames for the parameters related
to the parameter names to form a parameter names list. The parameter
names list is used to determine if the argument label for a function
should be clipped based on the typename. So for example a type like
NSOrderedCollectionDifferenceCalculationOptions would cause a label
ending with "Options" to get clipped so that for instance "withOptions"
becomes simply "with".
Unfortunately in the context of C++-Interop, the typename for the
parameter often resolves to what the type backing the typedef or enum is
and not the actual name of the typedef
(so `typedef NSUInteger NSOrderedCollectionDifferenceCalculationOptions`
resolves to a name of NSUInteger rather than
NSOrderedCollectionDifferenceCalculationOptions).
This patch seeks to collect a bit more information when processing
NS_OPTIONS typedefs and providing that to the calling
omitNeedlessWordsInFunctionName to handle more inteligently.
In practice this fixes anywhere in Foundatio where
`withOptions: NSOrderedCollectionDifferenceCalculationOptions` is used.
2022-06-16 19:41:04 -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
Konrad `ktoso` Malawski
7792a3127b
[Distributed] Implement missing case in permitting witnesses
2022-06-10 12:46:33 +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
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
Joe Groff
1546a598ee
Merge pull request #42455 from AnthonyLatsis/objc-optional-keypath-fixes
...
Use `AbstractStorageDecl::isSettableInSwift` to prohibit direct writes to `optional` requirements
2022-04-20 09:14:02 -07:00
Anthony Latsis
934964d49d
Use AbstractStorageDecl::isSettableInSwift to prohibit direct writes to optional requirements
...
Stop pretending that an optional requirement is immutable via the `StorageImplInfo` request.
This approach has lead astray the conformance checker and may have had a negative impact
on other code paths, and it doesn't work for imported declarations because they bypass the
request. Instead, use a forwarding `AbstractStorageDecl::isSettableInSwift` method
that special-cases optional requirements.
2022-04-20 14:27:15 +03:00
Konrad `ktoso` Malawski
4e2c059e20
review feedback, cleanup getting decode func
2022-04-18 16:53:47 -07:00
Konrad `ktoso` Malawski
dadf3011f9
cleanups
2022-04-18 16:53:44 -07:00
Konrad `ktoso` Malawski
79ad9278b2
[Distributed] Retain adhoc decodeNextArgument in distributed thunk
2022-04-18 16:53:10 -07:00
Slava Pestov
6982b90c6e
Serialization: Round-trip primary associated type list
2022-04-16 22:36:29 -04: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
Pavel Yaskevich
cd17bee644
[Serialization] Opaque types: serialize conditionally available underlying types
...
Resolves: rdar://90595158
2022-04-04 12:45:20 -07: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
a5a50a3658
[AST] NFC: Rename underlying type accessors of OpaqueTypeDecl
...
Adds a `Unique` component to the accessor names to draw the
distinction between unique and conditionally available substitutions.
2022-03-28 16:22:08 -07: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
Konrad `ktoso` Malawski
fa5321877e
[Distributed] Remove unused request, small cleanup
2022-03-25 21:53:10 +09: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
Becca Royal-Gordon
bb29c3589f
Merge pull request #41828 from beccadax/a-breach-of-protocol-can-cause-a-conflict
...
Check protocols for selector conflicts
2022-03-21 14:09:38 -07:00
Konrad `ktoso` Malawski
5a5d1ba2e6
[Distributed] Implement RemoteCallArgument
2022-03-17 22:55:09 +09:00
Becca Royal-Gordon
974fbc1167
[NFC] Move ObjC method support to NominalTypeDecl
...
This prepares us to generalize ObjC selector collision diagnostics to also include protocols. NFC in this commit because, even though Sema and ClangImporter now try to record ObjC methods on non-`ClassDecl`s, `NominalTypeDecl::createObjCMethodLookup()` still doesn’t create ObjC method tables for them, so the calls are no-ops.
2022-03-16 14:41:55 -07:00
Robert Widmann
0d2b2f2a55
Stabilize VarDecl::isLet for ParamDecls
...
For ParamDecl instances, the value of this property is not just a function of the introducer (let/var which is a poorly-defined concept for parameters), it's a function of the specifier (inout/__owned/__shared etc). However, computing the specifier also has the side effect of flipping the introducer bits. This appears to be because while the AST uses `isLet` in a syntactic sense "did the user write 'let'?", SIL uses it in a semantic sense "is this property semantically immutable?". These two queries need to be split from one another and the callers migrated. But that is a much larger task for a later time. For now, provide the value of `ParamDecl::isImmutable` to callers since that's the more conservative of the two behaviors.
The bug here is that it's possible for `getSpecifier` to *not* be called before `isLet` is called (usually in SIL). This manifested as a test output divergence on the non-asserts bots since the ASTVerifier was always calling getSpecifier, and most engineers do not build without asserts on at their desk.
rdar://89237318
2022-03-15 13:01:02 -07:00