Nate Chandler
158c782960
[AST] Promote isNoImplicitCopy to Decl.
...
Move the predicate up from ParamDecl to Decl and use it everywhere in
place of hasAttribute<NoImplicitCopyAttr>.
2022-09-02 16:12:17 -07:00
Pavel Yaskevich
d341c4128c
[AST] Make it possible to access type wrapper property (storage)
...
This is important because we need to force existance of the
underlying storage at the right moment.
2022-08-26 12:25:22 -07:00
Pavel Yaskevich
b3ed4d32ff
[AST] Make it possible to access type wrapper storage of a var
...
This is important because we need to force existance of the
underlying storage at the right moment.
2022-08-26 12:25:22 -07:00
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