Hamish Knight
912a7acc1e
Add FunctionArgApplyInfo::getArgDescription
...
This commit adds a member which produces a string
describing the argument being applied. This will
either be its argument label or position in the
argument list.
2019-11-05 13:51:53 -08:00
Pavel Yaskevich
c800bde8e1
[Diagnostics] Try to find overlap between src/dst protocols in assignment mismatch
2019-11-05 12:43:32 -08:00
Pavel Yaskevich
30440d8235
[Diagnostics] Properly diagnose assignment mismatch in ambiguity cases
2019-11-05 12:38:13 -08:00
Holly Borla
33b9d4c446
[Diagnostics] Change FailureDiagnostic::resolveType to replace
...
holes with generic parameters directly when possible.
2019-11-05 09:17:53 -08:00
Holly Borla
e63f259f4f
[ConstraintSystem] Bind holes to UnresolvedType instead of Any.
2019-11-05 09:15:13 -08:00
Hamish Knight
d0dbbf9f89
[CSDiagnostics] Add ephemeralness ambiguity notes
2019-11-03 08:42:25 -08:00
Hamish Knight
7077a68b83
[Sema] Diagnose unsound pointer conversions
...
Diagnose ephemeral conversions that are passed to @_nonEphemeral
parameters. Currently, this defaults to a warning with a frontend flag
to upgrade to an error. Hopefully this will become an error by default
in a future language version.
2019-11-03 08:42:25 -08:00
Pavel Yaskevich
6bb659c5a3
[Diagnostics] Add a diagnostic for incorrect use of trailing closures
2019-10-31 20:58:01 -07:00
Pavel Yaskevich
1315207a22
[Diagnostics] Introduce extraneous call fix
...
Detect and diagnose attempts to call variables and/or properties
which don't have a function type, so can't really support
invocation.
2019-10-30 16:53:42 -07:00
Pavel Yaskevich
58329e0c27
Revert "[Diagnostics][Qol] SR-11295 Emit diagnostics for same type coercion. "
2019-10-25 01:05:07 -07:00
Luciano Almeida
3dc82a6271
Handling ExplicityCoercion in simplifyLocator
2019-10-24 00:27:53 -03:00
Luciano Almeida
5d1eeacbe4
Resolving conflicts
2019-10-23 07:25:55 -03:00
Luciano Almeida
4385dd854f
Creating UnnecessaryCoercion warning fix
2019-10-21 23:03:12 -03:00
Anthony Latsis
d64d45d3d6
@lvalue exposure fixes & prevention
2019-10-22 04:30:40 +03:00
Holly Borla
e5c99cace6
Merge pull request #27769 from hborla/anyobject-conformance-failure
...
[ConstraintSystem] Diagnose missing AnyObject conformance using the MissingConformance constraint fix.
2019-10-18 22:10:21 -04:00
Holly Borla
0d95a84e91
[Diagnostics] Improve the error message for when a type fails to satisfy
...
`AnyObject` layout requirement.
2019-10-18 11:27:21 -07:00
Pavel Yaskevich
8d05192204
Merge pull request #27728 from xedin/port-extraneous-args
...
[Diagnostics] Diagnose extraneous argument(s) via fixes
2019-10-18 10:42:56 -07:00
Holly Borla
ec864fcd9c
[ConstraintFix] Don't pass along the RequirementKind to the MissingConformance
...
constraint fix. Instead, get the kind from the locator.
2019-10-18 09:03:06 -07:00
Holly Borla
ef0ecc41e5
[ConstraintSystem] Diagnose missing AnyObject conformance using
...
the MissingConformance constraint fix.
2019-10-16 20:38:00 -07:00
Pavel Yaskevich
9913f8db27
[Diagnostics] NFC: Use isLastElement API instead of checking locator path
2019-10-16 10:19:26 -07:00
Pavel Yaskevich
c97603f5d4
[CSDiagnostics] Diagnose extraneous arguments
2019-10-16 10:19:25 -07:00
Luciano Almeida
30ffe13cba
Merge branch 'master' of https://github.com/apple/swift into force-downcast-fix-explicit-coercion
2019-10-13 11:09:37 -03:00
Luciano Almeida
d896968d2c
clang-format
2019-10-12 22:39:12 -03:00
Luciano Almeida
f39ff88113
Initial implementation of moving the checks
2019-10-12 15:22:16 -03:00
Luciano Almeida
21c179d46f
Removing fixed CoerceToCheckedCast constraint and letting repairFailures handle the diagnostics
2019-10-12 11:38:59 -03:00
Luciano Almeida
12f98d7922
Merge branch 'master' into force-downcast-fix-explicit-coercion
2019-10-06 13:35:44 -03:00
Hamish Knight
6e3671da41
Move FunctionArgApplyInfo up the header
2019-10-03 16:53:37 -07:00
Hamish Knight
b5a0d58dc0
Have ArgumentMismatchFailure store FunctionArgApplyInfo
...
And define members in order to allow the easy
access of relevant information about the failure.
2019-10-03 15:26:31 -07:00
Hamish Knight
12c1db9c93
NFC: Move ArgumentMismatchFailure down a bit
...
Just to make sure it's defined after
FunctionArgApplyInfo.
2019-10-03 15:08:31 -07:00
Hamish Knight
c108dae5d9
[CSDiagnostics] Find argument lists for key path subscripts
...
This commit changes `getArgumentExprFor` to take
a ConstraintLocator argument from which to find
the argument list. This lets us properly handle
the case where we have a key path subscript
locator. In addition, this commit renames the
member to `getArgumentListExprFor` to make it
clear we're returning the argument list expression
rather than a single argument.
Resolves SR-11562.
2019-10-02 08:00:14 -07:00
Luciano Almeida
980ff05972
Add ForceDownCast fix for coercion expr to avoid fall-through into CSDiag
2019-10-01 20:25:15 -03:00
Robert Widmann
5a8d0744c3
[NFC] Adopt TypeBase-isms for GenericSignature
...
Structurally prevent a number of common anti-patterns involving generic
signatures by separating the interface into GenericSignature and the
implementation into GenericSignatureBase. In particular, this allows
the comparison operators to be deleted which forces callers to
canonicalize the signature or ask to compare pointers explicitly.
2019-09-30 14:04:36 -07:00
Pavel Yaskevich
10b1baebb2
Merge pull request #27362 from xedin/port-missing-args
...
[Diagnostics] Port missing argument(s) diagnostics
2019-09-25 21:08:54 -07:00
Pavel Yaskevich
cc2c868522
[Diagnostics] Produce a tailored diagnostic for multiple missing arguments
2019-09-24 22:05:14 -07:00
Robert Widmann
62266447f2
Drop the TypeChecker dependency from some helpers
2019-09-24 17:48:42 -07:00
Pavel Yaskevich
2120a31cf0
[Diagnostics] Correctly diagnose misplaced missing argument
...
Due to the fact that `matchCallArgument` can't and
doesn't take types into consideration while matching
arguments to parameters, when both arguments are
un-labeled, it's impossible to say which one is missing:
func foo(_: Int, _: String) {}
foo("")
In this case first argument is missing, but we end up with
two fixes - argument mismatch (for #1 ) and missing argument
(for #2 ), which is incorrect so it has to be handled specially.
2019-09-24 10:24:21 -07:00
Pavel Yaskevich
9406edc017
[Diagnostics] Tailored diagnostic for missing argument in property wrapper init
2019-09-23 13:00:37 -07:00
Pavel Yaskevich
60bcc94575
[Diagnostics] Implement single missing argument diagnosis
...
If call is missing a single argument we can provide a tailored
diagnostic and suggest a fix-it to add it at the appropriate
position.
2019-09-23 13:00:37 -07:00
Pavel Yaskevich
ee8c78eef5
[Diagnostics] Tailored diagnostic when single tuple used instead of N distinct arguments
...
Diagnose cases when instead of multiple distinct arguments
call got a single tuple argument with expected arity/types:
```swift
func foo(_: Int, _: Int) {}
foo((0, 1)) // expected 2 arguments, got 1 tuple with 2 elements
```
2019-09-23 13:00:37 -07:00
Pavel Yaskevich
4203c2f9f3
[Diagnostics] Store synthesized arguments in missing arguments diagnostic
...
Since we are about to start diagnosing more than just closures,
we need information about what synthesized arguments look like.
2019-09-23 12:59:27 -07:00
Pavel Yaskevich
96598d8ebf
Merge pull request #26207 from owenv/new-vararg-conversion-diag
...
[Diagnostics] Improve diagnostic when attempting to pass an Array to a variadic argument
2019-09-23 12:57:44 -07:00
Owen Voorhees
6c5185f2e3
Improve diagnostic when attempting to pass an Array to a variadic argument
...
- Give a more specific diagnostic which indicates the parameter is variadic
- If the argument is an Array literal, offer to drop the brackets
2019-09-20 17:30:23 -07:00
Holly Borla
29044e5d34
Merge pull request #27176 from hborla/type-cannot-conform-diag
...
[Diagnostics] Generalize the "protocol type cannot conform" error to work for all types that cannot conform to protocols.
2019-09-18 10:38:00 -07:00
Holly Borla
bf80250c84
Merge remote-tracking branch 'upstream/master' into type-cannot-conform-diag
2019-09-17 11:54:03 -07:00
Pavel Yaskevich
0aeaf7f15e
[Diagnostics] NFC: Remove "trailing" from method name for closures with missing args
...
`MissingArgumentsFailure::diagnoseClosure` can actually diagnose both
closures in argument positions as well as when their type comes from
context e.g. `let _: (Int) -> Void = {}`.
2019-09-17 10:34:44 -07:00
Holly Borla
2a7e0099d2
[Diagnostics] Add notes for the type_cannot_conform error that point
...
to the declaration that requires protocol conformance.
2019-09-17 09:22:07 -07:00
Pavel Yaskevich
2f325fa1d8
[Diagnostics] Don't store contextual type in missing argument fix/diagnostic
...
Instead of storing contextual function type in the fix/diagnostic,
let's fetch it from context (solution and/or locator) because it's
only used when it is a trailing closure missing some arguments anyway.
2019-09-16 16:50:31 -07:00
Holly Borla
173e4526ee
[Diagnostics] Adjust wording of type_cannot_conform error message.
2019-09-16 14:55:38 -07:00
Pavel Yaskevich
c20e4ac3c2
[Diagnostics] Fix usages of getChoiceFor
2019-09-13 22:35:53 -07:00
Pavel Yaskevich
b898eaf326
[Diagnostics] Tailored diagnostics for reference equality operator mismatches
2019-09-13 22:35:52 -07:00