Doug Gregor
133439dcbb
[Constraint solver] Request contextual type information per expression.
...
When requesting information about the contextual type of a constraint
system, do so using a given expression rather than treating it like
the global state that it is.
2020-01-23 11:46:17 -08:00
Luciano Almeida
68e09d64fd
[CSFix] Creating object literal module import fix
2020-01-21 11:54:26 -03:00
Luciano Almeida
fb12c09188
[NFC] Fixing minor comments that should be docs and minor call
2020-01-20 21:35:22 -03:00
Holly Borla
834eee6f4e
[Diagnostics] Implement MissingArgumentsFailure::diagnoseAsNote in order
...
to diagnose ambiguities due to missing arguments.
2020-01-07 17:37:38 -08:00
Luciano Almeida
64f8a6bd42
[CSDiagnostics] Renaming ContextualFailure CoerceExpr method naming
2020-01-06 14:37:27 -03:00
Luciano Almeida
a1bf54af51
[CSDiagnostics] Extract diagnostic for CoerceExpr to function
2020-01-04 23:41:14 -03:00
Pavel Yaskevich
8bcc192591
[Diagnostics] Diagnose inability to infer (complex) closure return type
2019-12-19 12:16:30 -08:00
Pavel Yaskevich
5ba2e59c63
Merge pull request #28752 from xedin/simplify-potential-binding
...
[ConstraintSystem] Record originator constraint for each type variable binding
2019-12-13 11:50:02 -08:00
Pavel Yaskevich
382013f788
[Diagnostics] Convert missing @escaping diagnostic to contextual failure
...
This gives diagnostic access to both sides of a conversion/binding
which makes it easier to diagnose errors associated with generic parameters.
2019-12-12 12:42:25 -08:00
Pavel Yaskevich
cc50b46345
[Diagnostics] Preserve raw from/to types in contextual mismatch diagnostic
...
This is useful in some situations where access to type variable(s)
helps to diagnose the problem properly e.g. if it's a conversion
to generic parameter.
2019-12-12 12:42:19 -08:00
Holly Borla
3d1ab4da67
Merge pull request #28712 from hborla/function-parameter-mismatch-diagnostics
...
[ConstraintSystem] Port function parameter type mismatch diagnostics.
2019-12-11 14:33:07 -08:00
Holly Borla
51c7c8c8f1
[ConstraintSystem] Port function parameter type mismatch diagnostics.
2019-12-11 10:45:52 -08:00
Brent Royal-Gordon
addbe3e5ed
[NFC] Thread DeclNameRef through most of the compiler
...
This huge commit contains as many of the mechanical changes as possible.
2019-12-11 00:55:18 -08:00
Holly Borla
edb4e70d66
Merge pull request #28600 from hborla/tuple-mismatch-diagnostics
...
[ConstraintSystem] Port tuple type mismatch diagnostics
2019-12-09 13:26:34 -08:00
Holly Borla
50abedd45c
[Diagnostics] Keep track of the indices of the tuple elements whose
...
types do not match in AllowTupleTypeMismatch/TupleContextualFailure.
2019-12-09 11:04:34 -08:00
Pavel Yaskevich
21a8b3c57d
[Diagnostics] Port tailored diagnostics for missing dynamicallyCall methods
2019-12-06 16:43:18 -08:00
Holly Borla
1e013a02cf
[ConstraintSystem] Move FailureDiagnostic::getFunctionArgApplyInfo
...
into `ConstraintSystem`.
2019-12-06 15:43:39 -08:00
Holly Borla
f9a1ab28f4
[ConstraintSystem] Port tuple type mismatches to the new framework
2019-12-06 13:12:57 -08:00
Hamish Knight
a97328dcbf
[CS] Use a MapVector to cache resolved overloads
...
Rather than maintaining a linked list of overload
choices, which must be linearly searched each time
we need to lookup an overload at a given callee
locator, use a MapVector which can be rolled back
at the end of a scope.
Remove ResolvedOverloadSetListItem in favor of
using SelectedOverload, which avoids the need to
convert between them when moving from
ConstraintSystem to Solution.
2019-12-05 14:47:52 -08:00
Pavel Yaskevich
3c5290c78c
[Diagnostics] Diagnose inability to infer contextual base type for member ref
2019-12-03 12:07:16 -08:00
Pavel Yaskevich
34f5b52db1
[Diagnostics] Diagnose ambiguities related to contextual type mismatch
...
If none of the candidates produce expected contextual type, record
all of the posibilities to produce a note per and diagnose this as
contextual type mismatch instead of a reference ambiguity.
2019-12-03 12:07:15 -08:00
Pavel Yaskevich
a9f11445c0
[Diagnostics] Diagnose an attempt to assign a value to an overloaded name
...
Example:
```swift
struct X {
}
func X(_: Int) -> Int {
return 42
}
X = 42
```
2019-12-03 12:07:15 -08:00
Slava Pestov
2e65a14ed4
Merge pull request #28372 from slavapestov/typecheck-decl-primary
...
Kill ClosuresWithUncomputedCaptures and split off TypeCheckDeclPrimary.cpp from TypeCheckDecl.cpp
2019-11-20 14:29:31 -05:00
Pavel Yaskevich
38a6cfaad1
[CSDiagnostic] Convert force optional unwrap diagnostic into a contextual one
...
Record both sides of conversion where a form of force unwrap is
necessary to be able to produce tailored diagnostics such as for
an attempt to use optional type as a boolean.
2019-11-19 15:15:29 -08:00
Slava Pestov
ef05accd31
Sema: Remove even more vestigial TypeChecker usages
2019-11-19 17:40:00 -05:00
Pavel Yaskevich
a7bc52fd9a
Merge pull request #28197 from xedin/handle-single-pd-arg-mismatch
...
[Diagnostics] Produce a tailored diagnostic for property wrapper argu…
2019-11-11 15:13:56 -08:00
Pavel Yaskevich
08f8f4191d
[Diagnostics] Produce a tailored diagnostic for property wrapper argument mismatch
...
Diagnose an attempt to initialize a property, which has a property
wrapper, with a value of an incorrect type.
2019-11-11 12:59:28 -08:00
Robert Widmann
7bad9aacc3
Drop the TypeChecker out of ConstraintSystem
2019-11-10 13:26:47 -08:00
Doug Gregor
bc926f7eb7
[Constraint system] Drop the root expression from FailureDiagnostic.
...
We're not using it for anything, now.
2019-11-08 22:38:49 -08:00
Doug Gregor
c744066c52
[Constraint solver] Stop using the "root expression" in failure diagnostics.
...
We're still using the root expression to find the parent map, but we're not
falling back to it indiscriminately. Use the parent of the anchor (or
appropriate substitute) instead so we have a better handle on which
expression we're diagnosing for.
2019-11-08 21:26:04 -08:00
Pavel Yaskevich
6d02fb7815
Merge pull request #28057 from xedin/assign-diags
...
[Diagnostics] Port the rest of assignment diagnostics to the new framework
2019-11-06 00:11:08 -08:00
Robert Widmann
53f2974e27
[NFC] Remove unnecessary TypeCheckers from sequence folding
2019-11-05 20:30:40 -08:00
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