Pavel Yaskevich
d74cb79ea3
[ConstraintSystem/Closures] Add support for repeat .. while statement
2021-10-08 10:08:02 -07:00
Pavel Yaskevich
28d1bacdce
[ConstraintSystem] Implement conjunction step
...
Iterate over all of the elements one-by-one and make sure that
each results in a single solution, otherwise fail the conjunction step.
Once all of the elements are handled either stop or,
if conjunction step has been performed in isolation,
return all of the outer constraints back to the system
and attempt to solve for outer context - that should
produce one or more solutions for conjunction to be
considered successfully solved.
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
441f8079be
[ConstraintSystem] Expose type variables referenced by conjunction element
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
84ca85dc01
[ConstraintLocator] Add a new element to track closure body elements
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
9073d00613
[ConstraintSystem] Allow conjunctions marking conjunctions as isolated from the rest of the system
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
0324a4cafc
[ConstraintSystem] Implement new required methods in ConjunctionElementProducer
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
ad01027a0d
[ConstraintSystem] Allow closure body element constraint to reference type variables
...
This would be useful when once it's used as part of a conjunction to
be able to solve the closure body element component in isolation.
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
73dffb3125
[ConstraintSystem] Don't require a type variable per closure body element
...
Since each of the body elements is already going to have a type associated
with it there is no need to create yet another type variable.
2021-10-08 10:08:01 -07:00
Pavel Yaskevich
6aaee599bd
[ConstraintSystem] Allow conjunction constraints to reference other variables
2021-10-08 10:08:00 -07:00
Pavel Yaskevich
27275f6214
[CSStep] Add an implementation of ConjunctionStep
...
It behavies similar to `DisjunctionStep` but attempts all of
its elements unless there is an inference failure.
2021-10-08 10:08:00 -07:00
Pavel Yaskevich
2377f0507c
[ConstraintSystem] Add a conjunction element producer
...
In preporation to add `ConjunctionStep`, let's first
introduce a `ConjunctionElement` and `ConjunctionElementProducer`.
2021-10-08 10:08:00 -07:00
Pavel Yaskevich
2b4691048e
[ConstraintSystem] Add a skeleton of Conjunction constraint
...
It's similar to disjunction constraint but represents an "and"
relationship between its elements instead of "or", so all of the
elements have to produce a solution for conjunction constraint
to be considered solved successfully.
2021-10-08 10:08:00 -07:00
Pavel Yaskevich
eb8eabfba7
[ConstraintSystem] Add a skeleton of ClosureBodyElement constraint
2021-10-08 10:08:00 -07:00
Pavel Yaskevich
1c0a306c75
Merge pull request #37956 from xedin/implicit-swift-to-c-ptr-conversions
...
[TypeChecker] Implement limited set of conversions between Swift and C pointers
2021-10-06 14:35:22 -07:00
Frederick Kellison-Linn
b433724735
Remove default argument from getContextualType
2021-10-05 17:04:54 -04:00
Hamish Knight
cf4fc9f3c9
Merge pull request #39541 from hamishknight/dynamic-programming
2021-10-05 21:11:01 +01:00
Frederick Kellison-Linn
f6b6f0cd2b
Lift replaceInferableTypes call into getContextualType
2021-10-04 23:36:33 -04:00
Hamish Knight
f045350266
[CS] Clean up dynamic member overload choice checking
...
Add `OverloadChoice::isAnyDynamicMemberLookup`,
and use it to clean up a couple of places.
2021-10-01 12:54:08 +01:00
Alex Hoppen
4521c99d56
Merge pull request #38782 from ahoppen/pr/sourcekit-cancellation
...
[SourceKit] Support cancellation of requests while an AST is being built
2021-09-28 20:08:14 +02:00
Hamish Knight
11617b1807
[CS] Move buildDisjunctionForOptionalVsUnderlying into .cpp
2021-09-24 15:51:09 +01:00
Alex Hoppen
7a80034e35
[SourceKit] Support cancellation of requests while an AST is being built
...
This commit refactors the way ASTs are being built in SourceKit and how `SwiftASTConsumer`s are served by the built ASTs. `SwiftASTManager.h` should give an overview of the new design.
This commit does not change the cancellation paradigm in SourceKit (yet). That is, subsequent requests with the same `OncePerASTToken` still cancel previous requests with the same token. But while previously, we were only able to cancel requests that haven’t started an AST build yet, we can now also cancel the AST build of the to-be-cancelled requests.
With this change in place, we can start looking into explicit cancellation of requests or other cancellation paradigms.
2021-09-23 11:53:45 +02:00
Holly Borla
1737303602
[ConstraintSystem] Increase the score when attempting overload choices
...
for unapplied references when the choice is a function declaration.
This will allow the solver to prune those overload choices when it
has already found a solultion with a property (all else equal in the
score). This is already done as an ambiguity tie-breaker in solution
ranking, but adding this bit to the score will prune a lot of search
space within the solver.
2021-09-22 13:33:44 -07:00
Alex Hoppen
998a7871f8
[Sema] Add cancellation flag to typechecker options
...
Once this flag is set, the type checker will bail out with a “expression to complex” error.
2021-09-22 12:01:00 +02:00
Pavel Yaskevich
f53bcea60c
[CSFix] Add a tailored fix for invalid Swift -> C pointer conversions
...
This is a skeleton of a fix that would be used to diagnose situations
when Swift -> C pointer conversion was attempted on a Swift function.
2021-09-20 17:22:26 -07:00
Pavel Yaskevich
f368e5a7b6
[ConstraintSystem] NFC: Extract Swift -> C pointer conversion simplification into a separate method
2021-09-20 17:22:26 -07:00
Pavel Yaskevich
9e7a670295
[ConstraintSystem] Implement new Swift -> C pointer conversions
...
Allow following conversions in argument positions
(applies only to call to imported C/ObjC declarations):
- Unsafe[Mutable]RawPointer -> Unsafe[Mutable]Pointer<[U]Int>
- Unsafe[Mutable]Pointer<Int{8, 16, ...}> <-> Unsafe[Mutable]Pointer<UInt{8, 16, ...}>
2021-09-20 17:22:25 -07:00
Pavel Yaskevich
4f97ef0e75
[ConstraintSystem] Add a helper to determine whether locator is for argument to C/ObjC imported decl
2021-09-20 17:22:25 -07:00
Pavel Yaskevich
3a41f7af5f
[ConstraintSystem] Add a new conversion - Swift to C pointers
...
Following pointer conversions are supported in argument positions (when referencing C/ObjC functions):
- Unsafe[Mutable]RawPointer -> Unsafe[Mutable]Pointer<[U]Int>
- Unsafe[Mutable]Pointer<Int{8, 16, ...}> -> Unsafe[Mutable]Pointer<UInt{8, 16, ...}>
2021-09-20 17:22:25 -07:00
Pavel Yaskevich
06a762b64a
[CSFix] Add a specific kind for IgnoreResultBuilderWithReturnStmts
2021-09-10 15:46:27 -07:00
Pavel Yaskevich
0a425480d0
[CSFix] NFC: Rename fix/diagnostic for checked casts that always succeed
2021-09-10 13:55:15 -07:00
Pavel Yaskevich
4c845972b4
[CSFix] Require all sub-classes of ContextualMismatch to supply a kind
2021-09-10 13:18:37 -07:00
Pavel Yaskevich
0f2ee14cad
[CSFix] Add a specific kind for CollectionElementContextualMismatch
2021-09-10 13:07:22 -07:00
Pavel Yaskevich
152cf0b66c
[CSFix] Add a specific kind for IgnoreKeyPathContextualMismatch
2021-09-10 13:01:26 -07:00
Pavel Yaskevich
48cdb58a91
[CSFix] Add a specific kind for AllowInOutConversion
2021-09-10 12:55:26 -07:00
Pavel Yaskevich
4f5b33b4dd
[CSFix] Add a specific kind for IgnoreAssignmentDestinationType
2021-09-10 12:48:14 -07:00
Pavel Yaskevich
2e5ab93f0f
[CSFix] Add a specific kind for IgnoreContextualType
2021-09-10 12:42:34 -07:00
Pavel Yaskevich
04b35e4c26
[CSFix] Add a specific kind for AllowAutoClosurePointerConversion
2021-09-10 12:37:08 -07:00
Pavel Yaskevich
934e875e7f
[CSFix] Add a specific kind for DropAsyncAttribute
2021-09-10 12:30:02 -07:00
Pavel Yaskevich
d1d2846baa
[CSFix] Add a specific kind for DropThrowsAttribute
2021-09-10 12:21:26 -07:00
Pavel Yaskevich
057563e783
[CSFix] Add a specific kind for AddSendableAttribute
2021-09-10 12:15:10 -07:00
Pavel Yaskevich
1039b76671
[CSFix] NFC: Fix code formatting for SpecifyKeyPathRootType fix
2021-09-10 10:02:47 -07:00
Pavel Yaskevich
3265042eff
[CSFix] NFC: Add classof implementation to most of the fixes
2021-09-10 10:00:45 -07:00
Pavel Yaskevich
d798d3f711
Merge pull request #39190 from xedin/diagnostics-for-weak-patterns
...
[ResultBuilders] Properly diagnose `weak` declarations with non-optional type
2021-09-08 16:08:25 -07:00
Pavel Yaskevich
3fac0fefc9
[CSFix] Add a skeleton of weak pattern with non-optional type fix
2021-09-07 17:36:56 -07:00
Hamish Knight
ddff9c4c9d
[CS] Store argument list mappings on solutions
...
Roll back argument list mappings in the constraint
system at the end of solver scopes, and copy
argument list mappings into solutions.
2021-09-06 12:54:49 +01:00
Hamish Knight
632bf41768
[CS] Make ArgumentLists a private member
...
Move associateArgumentList onto ConstraintSystem
and make ArgumentLists private in preparation for
having it roll back at the end of solver scopes.
2021-09-06 12:54:49 +01:00
Hamish Knight
dc60996f89
Merge pull request #38836 from hamishknight/toil-and-tuple
2021-09-04 19:30:04 +01:00
Holly Borla
09f2ca7f25
Merge pull request #39146 from hborla/wrapped-param-diagnostics
...
[ConstraintSystem] Fix a misleading argument mismatch error when using wrapped parameters.
2021-09-02 22:10:21 -07:00
Holly Borla
138c1170ea
[CSGen] Declare generateWrappedPropertyTypeConstraints as a method
...
on ConstraintSystem.
2021-09-02 17:37:44 -07:00
Pavel Yaskevich
35a0dab833
Merge pull request #39142 from xedin/fix-IUO-in-result-builders
...
[ConstraintSystem] Fix incorrect type-check of IUO pattern bindings
2021-09-02 17:33:54 -07:00