Commit Graph

2125 Commits

Author SHA1 Message Date
Slava Pestov
0eb2484a93 AST: Only build request dependency graph if frontend is run with -build-request-dependency-graph
This adds a measurable amount of runtime overhead, but it's only
needed for debugging.
2020-01-08 22:35:55 -05:00
Holly Borla
9ddb5eddc5 Merge pull request #29065 from hborla/subscript-error-diag
[Diagnostics] Finish porting subscript errors
2020-01-08 16:05:04 -08:00
Luciano Almeida
0238a29e70 [tests] Fixing tests 2020-01-08 07:07:49 -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
Holly Borla
43712bb860 [Diagnostics] Diagnose general ambiguity failures in diagnoseAmbiguityWithFixes. 2020-01-07 15:05:54 -08:00
Doug Gregor
64b691fb30 Merge pull request #29005 from DougGregor/functional-pattern-checking
[Type checker] Make typeCheckPattern() a functional request
2020-01-03 21:14:31 -08:00
Doug Gregor
61ac2534e7 [Type checker] Make coercePatternToType return the new Pattern.
Rather than mutating the parameter pattern in place and separately
return whether an error occurred, return the new pattern or NULL if an
error occurred. While here, switch over to ContextualPattern for the
input.

And get rid of that infernal "goto".
2020-01-03 17:27:55 -08:00
Slava Pestov
5a582a6dd5 Merge pull request #28988 from slavapestov/enclosing-self-type-check-expression-crash
Sema: Fix crash-on-invalid with 'enclosing self' property wrappers
2020-01-03 17:34:28 -05:00
Slava Pestov
41a00e5780 Sema: Fix crash-on-invalid with 'enclosing self' property wrappers
The diagnostic is still terrible, but at least we shouldn't crash.

Fixes one manifestation of <rdar://problem/57726880>.

I also filed <https://bugs.swift.org/browse/SR-11989> to track improving
the diagnostic.
2020-01-03 15:06:42 -05:00
Doug Gregor
2a13b1dff0 [Type checker] Stop coercing patterns while type-checking them.
Detangle the "type check" and "coerce" phases somewhat for pattern type
checking, as a precursor to making the former more functional.
2020-01-02 16:15:42 -08:00
swift-ci
2acd425104 Merge pull request #28857 from DougGregor/property-wrappers-unavailable-wrappedvalue 2019-12-18 15:02:26 -08:00
Doug Gregor
b7532f9190 [Property wrappers] Diagnose unavailable wrappedValue
Fixes rdar://problem/53678041 and rdar://problem/57676337; the former was
because we diagnosed unavailable wrappedValue at the null source location
originall, then started suppressing that diagnostic altogether. Produce a
proper diagnostic now.
2019-12-18 13:21:07 -08:00
Rintaro Ishizaki
80dbf7e549 Add test case for https://bugs.swift.org/browse/SR-9868
rdar://problem/47871647
2019-12-17 16:42:47 -08:00
Robert Widmann
e7170bd751 Add Qualified Lookup Requests 2019-12-16 15:36:09 -08:00
Tapan Thaker
fce55a6fb2 [Parse] Provide a diagnostic when a closure parameter is declared with type sugar (#28315)
* diagnostic when a closure parameter is declared with type sugar

* Use a test that was already commmited for SR-11724
i

* Use isa<T> instead of asking for the kind directly

* Fix nit: Remove a whitespace
2019-12-11 17:17:37 -08:00
Robert Widmann
fbdd907a1f Add a way to just synthesize CodingKeys 2019-12-10 16:28:51 -08:00
Robert Widmann
9c234d5d17 Make deriving CodingKeys Cheap
The semantic checks for CodingKeys are being duplicated across the value witness synthesis code paths.  Just synthesize a CodingKeys enum and let validateCodingKeysEnum do the heavy lifting when we actually need to go emit diagnostics.
2019-12-10 16:28:51 -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
94e9fd1d67 [Diagnostics] Use a generic "tuple type not convertible" error message
when there is no contextual type.
2019-12-09 11:25:32 -08:00
Robert Widmann
0063b8ecab Add Regression Tests for Bogus Existential Checked Casts
Try to make sure we don't do the wrong thing here in the future.  We've
been accepting the optional code for a long long time.

See rdar://57674858
2019-12-06 15:12:24 -08:00
Holly Borla
f9a1ab28f4 [ConstraintSystem] Port tuple type mismatches to the new framework 2019-12-06 13:12:57 -08:00
Hamish Knight
40750c01fd [CS] Use different locators for nested 'wrappedValue' lookups
With the new way of caching overloads in the
constraint system, we no longer allow different
overloads to be resolved for the same locator in
the same scope.

Adjust the property wrapper logic
so that it appends Member locator elements for
nested lookups.
2019-12-05 14:47:52 -08:00
swift-ci
b7d0264bc1 Merge pull request #28591 from DougGregor/nsobject-protocol-conformance 2019-12-05 13:10:59 -08:00
Doug Gregor
3fb77ea447 Provide a custom diagnostic for conformance to NSObjectProtocol
Swift classes cannot meaningfully conform to NSObjectProtocol.
Inheriting from NSObject is the appropriate fix, so suggest that.
Fixes rdar://problem/32543753.
2019-12-05 11:10:27 -08:00
Slava Pestov
1df3d1a33c Frontend: Don't interleave parsing and typechecking for the main file
SIL files still require this behavior; if we cleaned that up we
could simplify a fair bit of code here.

Fixes <https://bugs.swift.org/browse/SR-284>,
<https://bugs.swift.org/browse/SR-4426>.
2019-12-05 08:45:55 -05:00
Hamish Knight
31570f3f5c Add another override circularity test case 2019-12-04 16:35:08 -08:00
Pavel Yaskevich
3116d6ef8a Merge pull request #28539 from xedin/remove-constraint-handling-from-csdiag
[Diagnostics] Port diagnostics related to ambiguities and constraints
2019-12-04 12:15:26 -08:00
Rintaro Ishizaki
12fd2078e2 Merge pull request #28319 from rintaro/ide-completion-rdar49697202
[CodeCompletion] Suggest the property name in its didSet clause
2019-12-04 09:47:48 -08:00
Rintaro Ishizaki
ad4b9df3c0 [CodeCompletion] Suggest the property name in its didSet clause
Previously, property names are hidden in the whole range of the
declarations. Now, it's only hidden in its own initializer range.

rdar://problem/49697202
2019-12-03 18:12:47 -08:00
Robert Widmann
371526bdea Add a high-level request to type check a file 2019-12-03 17:16:14 -08:00
Pavel Yaskevich
5cacd1bb36 [ConstraintSystem] Fix situations when contextual base type can't be inferred
It might be either impossible to infer the base because there is
no contextual information e.g. `_ = .foo` or there is something
else wrong in the expression which disconnects member reference
from its context.
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
Doug Gregor
dc258b2083 Merge pull request #28531 from DougGregor/explicit-init-property-wrapper-opt
[AST] Properties can be explicitly initialized via their wrapper.
2019-12-02 20:35:28 -08:00
Doug Gregor
9eac6fe364 [AST] Properties can be explicitly initialized via their wrapper.
The computation for "is explicitly initialized" on a pattern binding
entry didn't account for explicit initialization via the property
wrapper (e.g. @Wrapper(closure: { ... })), which lead to a crash for
properties with optional type. Fixes rdar://problem/57411331.
2019-12-02 18:03:26 -08:00
Hamish Knight
19e199e567 Use DefaultArgumentExpr for caller-side defaults (#28279)
Use DefaultArgumentExpr for caller-side defaults
2019-12-02 13:57:17 -08:00
Suyash Srijan
4c85dd65ae Merge pull request #28216 from theblixguy/fix/SR-11762
[Typechecker] Fix _modify for properties using a property wrapper
2019-11-21 11:42:03 +00:00
Hamish Knight
c667d2b361 Use DefaultArgumentExpr for caller-side defaults
This commit changes how we represent caller-side
default arguments within the AST. Instead of
directly inserting them into the call-site, use
a DefaultArgumentExpr to refer to them indirectly.

The main goal of this change is to make it such
that the expression type-checker no longer cares
about the difference between caller-side and
callee-side default arguments. In particular, it
no longer cares about whether a caller-side
default argument is well-formed when type-checking
an apply. This is important because any
conversions introduced by the default argument
shouldn't affect the score of the resulting
solution.

Instead, caller-side defaults are now lazily
type-checked when we want to emit them in SILGen.
This is done through introducing a request, and
adjusting the logic in SILGen to be more lenient
with ErrorExprs. Caller-side defaults in primary
files are still also currently checked as a part
of the declaration by `checkDefaultArguments`.

Resolves SR-11085.
Resolves rdar://problem/56144412.
2019-11-20 15:07:32 -08:00
Nathan Hawes
7b33254b68 Merge pull request #28226 from nathawes/assertion-fixes
Fix some SourceKit assertion hits
2019-11-19 09:50:41 -08:00
Suyash Srijan
0cd59069d3 [Test] Update a few failing tests 2019-11-16 16:32:39 +00:00
Slava Pestov
50872964dd Merge pull request #28289 from slavapestov/generic-parameters-are-unreliable-witnesses
Revert "Sema: Look for generic parameters first when inferring an associated type"
2019-11-16 01:56:16 -05:00
Harlan Haskins
26b20ef198 Merge pull request #28227 from keith/ks/remove-frozen-warning
Remove warning about @frozen without library evolution
2019-11-15 20:14:24 -08:00
Nathan Hawes
125c1fb03e [Sema] Avoid needing the typechecker for the IsStaticRequest request
It was being used purely to get the name of the type context for a diagnostic
message. SourceKit's syntactic-only requests were hitting an assertion when
this diagnostic was triggered because they don't set up a type checker.
2019-11-15 18:10:22 -08:00
Slava Pestov
55e3797471 Revert "Sema: Look for generic parameters first when inferring an associated type"
This breaks source compatibility a little bit more than we'd like, so
reverting it for now.

Fixes <rdar://problem/57213598>.

This reverts commit 04fbcc0149.
2019-11-15 14:32:13 -05:00
Slava Pestov
9826aaa9ed Merge pull request #28275 from slavapestov/check-where-clause-non-generic-type
Check generic requirements of parent context when realizing non-generic types
2019-11-15 08:46:04 -05:00
swift-ci
05405351b7 Merge pull request #28274 from DougGregor/bool-raw-value 2019-11-14 21:52:10 -08:00
Doug Gregor
21a7fba895 More tests for Bool raw values of enums 2019-11-14 17:22:09 -08:00
Doug Gregor
9243c61244 Handle Boolean literals as enum raw values.
Fixes rdar://problem/55384273.
2019-11-14 17:22:09 -08:00
Slava Pestov
54155fe290 Sema: Check generic requirements of parent context when realizing non-generic types
When realizing a type like Foo<A>.Bar, we have to account for the
possibility that Bar is defined in a constrained extension of Foo,
and has generic requirements beyond those that Foo itself places
on 'A'.

Previously we only handled this for types referenced from the
constraint system as part of openUnboundGenericType(), so we were
allowing invalid types through in type context.

Add the right checking to applyGenericArguments() to close the
hole. Note that the old code path still exists in the constraint
solver; it is used for member accesses on metatype bases only.

Fixes <https://bugs.swift.org/browse/SR-10466>.
2019-11-14 18:26:43 -05:00
Doug Gregor
6b8d54df0c Merge pull request #20795 from DougGregor/sr-8767
[Test] Add tests from SR-8767 / rdar://problem/44522298.
2019-11-14 15:21:13 -08:00
Holly Borla
5bb50068ac Merge pull request #28243 from hborla/missing-generic-args-refactoring
[ConstraintSystem] Missing generic args/hole refactoring
2019-11-14 13:48:40 -08:00