Pavel Yaskevich
25762c25ee
[CSSimplify] Make sure that Swift -> C pointer conversion always waits for optionals
...
Wait for a value-to-optional promotion or optional-to-optional conversion
to happen before attempting Swift -> C pointer conversion.
2021-09-20 17:22:26 -07: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
5cb8604b60
[ConstraintSystem] De-prioritize solutions with Swift -> C pointer conversions
...
Just like other implicit conversions - always prefer solutions with
the lowest possible number of them.
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
d95e92c92c
[CSSimplify] Allow implicit Swift -> C pointer conversion within optional types
...
Support Swift -> C pointer conversions even if argument required
a value to optional promotion or is optional.
2021-09-20 17:22:25 -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
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
a061a966d1
Merge pull request #39251 from xedin/classof-for-fixes
...
[CSFix] Add support for `classof` for all fixes
2021-09-20 14:33:06 -07:00
Amritpan Kaur
e57ff0224d
[NFC] Replace similar if block in claimNextArgs with matchParameterLabel().
2021-09-17 16:28:35 -07:00
Amritpan Kaur
2667d3df25
[CSSimplify] Add omitted projection name label as valid argument label and consolidate all checks for argument and parameter label matches into new Param member function.
2021-09-17 16:25:26 -07:00
LucianoAlmeida
d53a862251
[Sema][SR-15179] Do not record default argument mismatch fix if there is one remove arg fix already for locator
2021-09-13 13:51:18 -03:00
LucianoAlmeida
ac92f4e44a
[Sema] Ignore individual FunctionArgument inout mismatch fix if there is already a fix recorded for function type locator
2021-09-13 11:20:44 -03:00
Pavel Yaskevich
150203c4e4
[Diagnostics] Use IgnoreContextualType for contextual failures related to closure body/result types
2021-09-10 17:17:31 -07:00
Pavel Yaskevich
e512473c64
[Diagnostics] Use IgnoreContextualType fix for mismatches between ternary branch and contextual type
2021-09-10 16:14:28 -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
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
Hamish Knight
77e6c083f3
[AutoDiff] [CS] Formalize function tupling behavior for @differentiable
...
Reject tupling into a `@differentiable` function,
and allow the stripping of `@noDerivative` given
we're also losing `@differentiable`.
2021-09-09 21:46:32 +01:00
Hamish Knight
cab39bf26c
[CS] Formalize param flag handling for imploding params
...
By default avoid imploding params that have parameter
flags, but carve out exceptions for ownership flags,
which can be thunked, and `@_nonEphemeral` which can
be freely dropped without issue.
2021-09-09 21:46:31 +01:00
Hamish Knight
af14bba276
[AST] Simplify AnyFunctionType::composeTuple
...
Remove the canonicalVararg parameter and
CanParamArrayRef wrapper. Almost none of the
callers want canonicalVararg, and the one that
does calls `getCanonicalType` on the result
anyway.
2021-09-09 21:46:31 +01:00
Pavel Yaskevich
3bbde55052
[ConstraintSystem] Detect and diagnose incorrectly typed weak declarations
...
All `weak` declarations are supposed to have an optional type.
Detect situations when is not an optional, wrap it as a fix,
and diagnose the problem.
2021-09-08 09:39:54 -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
Holly Borla
df76275116
Merge pull request #39169 from hborla/bogus-missing-function-call-error
...
[ConstraintSystem] Fix a bogus missing function call error message.
2021-09-07 11:24:50 -07:00
LucianoAlmeida
63330f9a6e
[Sema] Do not emit warning about conditional cast bridge when from type is optional
2021-09-07 01:43:58 -03:00
Holly Borla
03777c3fc9
[Diagnostics] Remove ContextualFailure::diagnoseMissingFunctionCall.
...
Instead, always diagnose missing call errors via MissingCallFailure.
2021-09-06 20:05:13 -07:00
Holly Borla
dc10f60198
[ConstraintSystem] Don't attempt missing function call diagnostics if
...
there is no function expression explicitly written in the source code.
2021-09-06 19:50:00 -07:00
Hamish Knight
dc60996f89
Merge pull request #38836 from hamishknight/toil-and-tuple
2021-09-04 19:30:04 +01:00
Pavel Yaskevich
e4e2cdd99b
Merge pull request #39074 from LucianoPAlmeida/minor-fixes
...
[NFC] Remove old comment related to port diagnostics to new framework
2021-09-03 17:58:39 -07: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
947a6c32a5
[ConstraintSystem] In the solver, only generate constraints for wrapped
...
parameter attributes for closure parameters.
For regular function parameters, these constraints will have already been
generated and solved when computing the backing property wrapper type at
the function declaration. If the solver also generates these constraints
when type checking a function call, it leads to misleading diagnostics
about an argument mismatch that will appear at the function declaration
instead of the call-site.
2021-09-02 17:37:44 -07:00
Konrad `ktoso` Malawski
b73050e49e
Merge pull request #39095 from AnthonyLatsis/se-309
...
SE-0309: Unlock existential types for all protocols
2021-09-02 11:27:39 +09:00
Holly Borla
d2bdbd6208
[ConstraintSystem] Fix a silly crash in repairFailures.
...
The code checked if the last element of locator path vector
is a certain kind of element without first ensuring that the
vector isn't empty.
2021-09-01 13:48:29 -07:00
Hamish Knight
3e28bbbd2c
Update for review feedback
...
- Remove OriginalArguments in favor of storing the
pre-rewritten argument list, which simplifies things
nicely
- Adopt llvm::indexed_accessor_iterator
2021-09-01 18:40:29 +01:00
Hamish Knight
8c2b88abc0
[CS] Adopt ArgumentList
...
- Explicitly limit favoring logic to only handle
unary args, this seems to have always been the
case, but needs to be handled explicitly now that
argument lists aren't exprs
- Update the ConstraintLocator simplification to
handle argument lists
- Store a mapping of locators to argument lists
in the constraint system
- Abstract more logic into a getArgumentLocator
method which retrieves an argument-to-param locator
from an argument anchor expr
2021-09-01 18:40:25 +01:00
Amritpan Kaur
9a4572e17f
[NFC] Rename argNumber to avoid confusion with numArgs.
2021-08-31 09:28:52 -07:00
Anthony Latsis
e49ca21bf0
Sema: Check for invalid reference *before* checking for unsupported existential member access
2021-08-31 19:21:27 +03:00
Rintaro Ishizaki
49547a5378
[NFC][Basic] Import llvm::isa_and_nonnull to 'swift' namespace
...
Just for convenicence.
* Replace `llvm::isa_and_nonnull` with imported `isa_and_nonnull`
* Repalce some `EXPR && isa<T>(EXPR)` with `isa_and_nonnull<T>(EXPR)`
2021-08-27 11:36:21 -07:00
LucianoAlmeida
78ffd65187
[NFC] Remove old comment related to port diagnostics to new framework
2021-08-27 09:21:16 -03:00
Kavon Farvardin
c0607b345f
Revert "Merge pull request #33767 from theblixguy/chore/remove-self-or-associated-type-diagnostic"
...
The following regression test added for this feature is not passing:
Swift(linux-x86_64) :: decl/protocol/protocols_with_self_or_assoc_reqs_executable.swift
with a compiler crash happening during SILFunctionTransform "Devirtualizer".
Reverting to unblock CI.
This reverts commit f96057e260 , reversing
changes made to 3fc18f3603 .
2021-08-26 16:46:42 -07:00
Konrad `ktoso` Malawski
f96057e260
Merge pull request #33767 from theblixguy/chore/remove-self-or-associated-type-diagnostic
...
SE-0309: Unlock existential types for all protocols
2021-08-27 06:09:47 +09:00
LucianoAlmeida
b5dbb694cc
[Sema][SR-14408] Increase the impact of missing member fix when member is on argument position
2021-08-25 20:13:46 -03:00
Pavel Yaskevich
beb23718f8
[Diagnostics] Improve diagnostics related to pointer initialization
...
- Increase impact of a generic pointer-to-pointer mismatch fix to
match that of a contextual type failure. This allows more specific
fixes to take precedence.
- De-prioritize generic argument mismatch fix when both types are
pointers. This allows pointer-to-pointer conversion produce a
more specific fix.
- De-prioritize fixes that involve `Builtin.RawPointer` or `OpaquePointer`
in parameter positions. This helps to produce better diagnostics
for argument mismatches during pointer initialization e.g.
`UnsafeRawPointer(<pointer>)`.
2021-08-20 15:44:56 -07:00