Kavon Farvardin
0420310623
NCGenerics: it's no longer "experimental"
...
resolves rdar://127701059
2024-05-08 10:49:12 -07:00
Kavon Farvardin
b3d548218b
NCGenerics: omit flag in interfaces
...
Also cleans-up legacy code and tests that are no longer needed.
2024-04-18 21:57:44 -07:00
Kavon Farvardin
179bc4b605
Merge pull request #72820 from kavon/conditional-copyable-restriction
...
NCGenerics: restrict conditional Copyable reqs
2024-04-09 17:56:34 -07:00
Slava Pestov
480592a7d5
Merge pull request #72847 from slavapestov/fix-rdar123645784
...
Fix two problems with opaque return types -vs- parameter packs
2024-04-05 07:31:34 -04:00
Slava Pestov
6d3229a420
Sema: Update tuple conformance test case to use pack iteration
...
Unfortunately SILGen still blows up when emitting witness thunks here.
2024-04-04 19:36:25 -04:00
Kavon Farvardin
215c4e1c25
NCGenerics: restrict conditional Copyable reqs
...
It doesn't really make sense for a conditional conformance requirement
for `Copyable` to depend on any other requirement other than other
`Copyable` conformance requirements.
resolves rdar://124967739
2024-04-04 14:20:28 -07:00
Slava Pestov
454e5cff67
Merge pull request #72825 from slavapestov/two-minor-fixes-and-tests
...
RequirementMachine: Fix two minor crash on invalid bugs
2024-04-03 22:42:24 -04:00
Kavon Farvardin
e759a28f56
Merge pull request #72786 from kavon/ncgenerics-associatedtype-restriction
...
NCGenerics: introduce `SuppressedAssociatedTypes`
2024-04-03 16:28:54 -07:00
Slava Pestov
61dbaf892d
RequirementMachine: Fix crash with protocol typealias having unbound generic type
...
Make sure we don't try to introduce an implicit same-type requirement
in this case.
Fixes rdar://problem/63731199.
2024-04-03 17:47:39 -04:00
Slava Pestov
31114f2cfd
Add regression test for rdar://94848868
2024-04-03 16:48:02 -04:00
Slava Pestov
03467a1927
Add test case for rdar://124697829
...
This was fixed by 6cd5468cce .
2024-04-03 14:10:36 -04:00
Kavon Farvardin
30983530b6
NCGenerics: introduce SuppressedAssociatedTypes
...
The model for associated types hasn't been fully worked-out for
noncopyable generics, but there is some support already that is being
used by the stdlib for an internal-only (and rather cursed) protocol
`_Pointer` to support `UnsafePointer`, etc.
This patch gates the existing experimental support for associated types
behind a feature flag. This flag doesn't emit feature-guards in
interfaces, since support for it is tied closely to NoncopyableGenerics
and has been there from its early days.
2024-04-02 16:53:36 -07:00
Doug Gregor
bd696f9c05
Enable failable initializers for noncopyable types
...
Noncopyable types were prevented from having failable initializers
because `Optional` itself didn't support noncopyable types. Now
`Optional` does, so lift this restriction and add a test.
2024-04-01 17:29:41 -07:00
Slava Pestov
bee9fee58b
RequirementMachine: Don't call ProtocolDecl::getSuperclass() in concrete contraction
...
This changes the minimized signature in a very narrow edge case.
If you have
class C : P {}
and also
protocol P : C {}
protocol P where Self : C {}
then <T where T : P, T : C> now becomes <T : P> both with spellings;
before, the first one gave <T : P> and the second <T : C>.
2024-03-21 14:49:05 -04:00
Slava Pestov
bc85d66b96
AST: Don't call ProtocolDecl::getSuperclass() in lookupExistentialConformance()
2024-03-21 14:49:04 -04:00
Karoy Lorentey
4b1477cc2c
[test] Update tests for new stdlib
2024-03-18 11:08:32 -07:00
Kavon Farvardin
f18c7f909a
Test: fix and enable test
...
After removing the implicit conditional conformance synthesis for
inverses, this test wasn't updated.
2024-03-14 23:10:44 -07:00
Kavon Farvardin
47676b2248
Test: fix a number of NCGenerics-specific tests
2024-03-14 23:10:44 -07:00
Kavon Farvardin
102ccbc70b
Test: updates for NoncopyableGenerics
...
These tests of the type system are being updated because of the new
presence of Copyable and Escapable conformances & conformance
requirements.
2024-03-14 23:10:44 -07:00
Kavon Farvardin
341ff24150
Test: fold together similar NCGenerics tests
2024-03-14 23:10:44 -07:00
Kavon Farvardin
af933c6723
Sema: remove TypeResolver::diagnoseMoveOnlyGeneric
2024-03-14 23:10:44 -07:00
Kavon Farvardin
71de500845
Test: update inverse_copyable_requirement.swift
2024-03-14 23:10:44 -07:00
Slava Pestov
3a4d831e52
AST: Fix crash-on-invalid when writing ~ followed by a non-protocol
...
Also reword some diagnostics. We don't want to talk about 'invert' or
'inverse'.
2024-03-11 14:36:21 -04:00
Slava Pestov
5afdb987e2
Merge pull request #72146 from slavapestov/ncgenerics-fixes-9
...
Non-copyable generics fixes, part 9
2024-03-07 22:14:33 -05:00
Slava Pestov
af8c8f1671
Sema: Remove non-experimental associated type inference
2024-03-07 17:30:17 -05:00
Slava Pestov
708586baea
Sema: Remove a usage of hasInverseMarking()
...
This addresses some duplicate diagnostics from the previous commit.
2024-03-07 15:07:48 -05:00
Slava Pestov
41df661160
AST: Use a builtin conformance for unconditional Copyable/Escapable
...
This generalizes what we were already doing for classes.
2024-03-07 15:07:47 -05:00
Slava Pestov
dcea491dbe
Sema: Remove inference of conditional Copyable conformance from generic parameters
2024-03-06 22:47:54 -05:00
Slava Pestov
10a2ddb95e
RequirementMachine: Fix MaxConcreteNesting check to take initial rules into account
...
Fixes rdar://123357717.
2024-03-06 21:42:49 -05:00
Kavon Farvardin
19a5bb007e
Test: more existential coverage
2024-03-02 09:57:04 -08:00
Holly Borla
9ba481ad53
[Diagnostics] Clarify the wording of error_in_future_swift_version.
2024-03-01 12:05:51 -08:00
Slava Pestov
1b99dd2451
RequirementMachine: Tweak RewriteSystem::recordConflict() heuristic again
2024-02-29 18:13:28 -05:00
Slava Pestov
4a1b0c80cd
RequirementMachine: Install placeholder requirement signature if completion fails
...
I did this if there was a request cycle but forgot the other obvious case.
2024-02-29 18:13:28 -05:00
Slava Pestov
2f4ed5a949
Sema: Clean up diagnoseMissingOwnership()
...
- Pass down the TypeResolution instance so we can get the generic
signature. This ensures we always use the correct signature in
SIL mode.
- Don't diagnose if the type contains error types.
2024-02-29 18:13:28 -05:00
Slava Pestov
d3aa3a8db9
Adjust XFAILs
2024-02-29 13:55:48 -05:00
Kavon Farvardin
18f00668ce
NCGenerics: fix ExistentialAny handling
...
The checking for ExistentialAny diagnostics needed to be updated to both
handle the new Copyable/Escapable protocols that appear in the Any and
AnyObject existential layouts.
resolves rdar://123332844
2024-02-27 14:15:34 -08:00
Slava Pestov
48f46f0e3c
Sema: Redo the normalization in TypeResolver::resolveCompositionType()
2024-02-24 07:25:59 -05:00
Slava Pestov
1267f87251
AST: Fancier getPlaceholderRequirementSignature()
2024-02-24 07:25:59 -05:00
Slava Pestov
512a15939d
Sema: Fix handling of inverse requirements in checkProtocolRefinementRequirements()
2024-02-24 07:25:59 -05:00
Slava Pestov
bd06653ee9
AST: Expand defaults in InheritedProtocolsRequest::evaluate()
2024-02-24 07:25:59 -05:00
Slava Pestov
dde28e96a2
AST: Don't call getDirectlyInheritedNominalTypeDecls() on a protocol in ConformanceLookupTable
2024-02-24 07:25:59 -05:00
Meghana Gupta
ca73cba046
Enable lifetime dependence inference when NonescapableTypes is on
2024-02-23 01:49:47 -08:00
Kavon Farvardin
84b309d506
NCGenerics: conformances can depend on Copyable
2024-02-21 22:38:23 -08:00
Pavel Yaskevich
28e13d57c4
Merge pull request #71752 from xedin/add-test-case-for-ncg-objc-protocols
...
[Tests] NFC: Add a test-case for self-conforming protocols and Copyab…
2024-02-21 09:28:27 -08:00
Slava Pestov
e7d7f6f69f
RequirementMachine: Add Copyable/Escapable requirements to 'placeholder' generic signatures
...
If we fail to build a generic signature (or requirement signature of a
protocol) because of a request cycle or because Knuth-Bendix completion
failed, we would create a placeholder signature with no requirements.
However in a move-only world, a completely unconstrained generic
parameter might generate spurious diagnostics when used in a copyable
way. For this reason, let's outfit these placeholder signatures with
a default set of conformance requirements to Copyable and Escapable.
2024-02-20 18:26:05 -05:00
Kavon Farvardin
f296d8e158
NCGenerics: mass XFAIL tests
...
It's easier to get a handle on regressions while working through
failures if the tests that are known to not pass are XFAIL'd for
NoncopyableGenerics.
2024-02-20 18:26:05 -05:00
Pavel Yaskevich
11ef6e58d8
Merge pull request #71659 from xedin/noncopyable-circularity-fixes
...
[AST/Sema] NonCopyableGenerics: Address some of the request circularity issues
2024-02-20 12:38:16 -08:00
Pavel Yaskevich
7a3736ac29
[Tests] NFC: Add a test-case for self-conforming protocols and Copyable interaction
2024-02-20 10:23:42 -08:00
Kavon Farvardin
70878a65dd
NCGenerics: add more extension test coverage
2024-02-20 00:00:06 -08:00
Kavon Farvardin
722282ee4f
ASTPrinter: fix nested inverse printing
...
Nested types with inverse requirements on generic parameters would
sometimes print incorrectly. We only print the inverses on outer generic
parameters for extensions.
fixes rdar://123281976
2024-02-19 23:50:15 -08:00