Hamish Knight
edca7c85ad
Adopt ABORT throughout the compiler
...
Convert a bunch of places where we're dumping to stderr and calling
`abort` over to using `ABORT` such that the message gets printed to
the pretty stack trace. This ensures it gets picked up by
CrashReporter.
2025-05-19 20:55:01 +01:00
Hamish Knight
b8fc71c684
[AST] Fix an accidental use of llvm::errs
2025-05-19 20:55:01 +01:00
Joe Groff
52d7781758
Merge pull request #81424 from jckarter/same-type-constraint-stop-copyable
...
Sema: Allow `T == NonCopyableOrEscapable` same-type constraints without a redundant `T: ~Copyable`.
2025-05-14 08:09:05 -07:00
Joe Groff
e4a6faa3f2
Sema: Allow T == NonCopyableOrEscapable same-type constraints without a redundant T: ~Copyable.
...
Enhance the logic in `applyInverses` to also take into account same-type constraints spelled in
the generic signature, so that same-type-constraining a type parameter to a type that is itself
not `Copyable` or `Escapable` suppresses the default application of those constraints on the
type parameter. Fixes rdar://147757973.
2025-05-13 11:31:41 -07:00
Slava Pestov
df02862c2a
Sema: Disallow SE-0361 with variadic generic types for now
...
`extension G<Int>` introduces a same-type requirement, and
this isn't supported for variadic generic types yet.
Make sure we pass a valid source location here to diagnose
instead of dropping the error.
- Fixes https://github.com/apple/swift/issues/70432
- Fixes rdar://119613080
2025-05-05 16:04:17 -04:00
Slava Pestov
6b4710ed22
Merge pull request #81142 from slavapestov/more-type-subst-cleanup
...
Clean up duplicated opened existential archetype handling in SIL and more
2025-04-30 02:42:57 -04:00
Slava Pestov
651e0af4d1
RequirementMachine: Compare weight before length in Term/MutableTerm::compare()
2025-04-29 13:55:30 -04:00
Slava Pestov
cf1572c65b
AST: Add ASTContext::TheSelfType for convenience
2025-04-28 11:49:50 -04:00
Anthony Latsis
a0930dec31
AST: Cut down on DescriptiveDeclKind usage in DiagnosticsSema.def
2025-04-05 12:31:19 +01:00
Slava Pestov
91503710bc
AST: Remove origType parameter from ProtocolConformanceRef::getTypeWitness()
2025-04-03 17:35:32 -04:00
Slava Pestov
d77c6f413d
RequirementMachine: Skip protocol type aliases that contain unbound dependent member types
...
In the below, 'Self.A.A' is not a type parameter; rather, since
'Self.A' is concretely known to be 'S', we resolve it as 'S.A',
which performs a name lookup and finds the concrete type alias 'A':
public struct S {
public typealias A = Int
}
public protocol P {
typealias A = S
}
public struct G<T> {}
public protocol Q: P {
typealias B = G<Self.A.A>
}
This is fine, but such a type alias should not participate in
the rewrite system. Let's exclude them like any other invalid
requirement.
The type alias itself is not an error; however, it is an error
to use it from a 'where' clause requirement. This is not
diagnosed yet, though.
Fixes rdar://136686001.
2025-03-26 10:55:23 -04:00
Alejandro Alonso
d0513a7aec
Merge pull request #79665 from Azoy/value-generics-no-more-experiment
...
[AST] Make ValueGenerics feature always available
2025-03-10 15:14:34 -07:00
Doug Gregor
ffca6968ed
[Isolated conformances] Diagnose conflict with isolated conformances and Sendable
2025-02-28 13:08:35 -08:00
Alejandro Alonso
c1bb143648
Make ValueGenerics feature always available
2025-02-27 10:03:37 -08:00
Joe Groff
a0a26b8330
Require explicit statement of all Copyable/Escapable requirements for conditional Copyable/Escapable conformances.
...
As specified by the SE-0446 acceptance, extensions that declare a type's
conditional `Copyable` or `Escapable` ability must reiterate explicitly all
of the `Copyable` and/or `Escapable` requirements, whether required or not
required (by e.g. `~Copyable`) that were suppressed in the original
type declaration.
2025-01-21 09:36:39 -08:00
swift-ci
5e0b892e9e
Merge remote-tracking branch 'origin/main' into rebranch
2024-09-20 13:09:36 -07:00
swift-ci
56bd686ccf
Merge remote-tracking branch 'origin/main' into rebranch
2024-09-19 18:58:28 -07:00
Slava Pestov
afbd81a599
AST/Sema: Use ProtocolConformanceRef::getTypeWitness()
2024-09-19 14:18:33 -04:00
Slava Pestov
da0130d297
AST: Replace calls to substBaseType() with getAssociatedType()
2024-09-19 14:18:32 -04:00
Ben Barham
a7b50f357f
Merge remote-tracking branch 'origin/main' into manual-main-merge
...
Conflicts:
- `lib/Driver/ToolChains.cpp` conflicting with the `addAllArgs` rename
for multiple options
2024-09-16 13:53:18 -07:00
Slava Pestov
d57b6d748b
RequirementMachine: Forgot to re-enable an assert
2024-09-14 23:33:11 -04:00
Slava Pestov
fbe3d71b19
RequirementMachine: Small cleanup
2024-09-14 23:33:11 -04:00
Slava Pestov
f35c90a6b7
Merge pull request #76445 from slavapestov/maptypeintocontext
...
Overhaul mapTypeIntoContext()
2024-09-14 08:45:20 -04:00
Slava Pestov
08bb0017f5
AST: Add GenericSignatureImpl::getReducedTypeParameter()
...
This avoids a bit of indirection when the input is already known to be
a type parameter, and not just a type that contains type parameters.
2024-09-13 15:19:48 -04:00
Slava Pestov
be9d999e64
AST: Simplify GenericSignature::getLocalRequirements()
2024-09-13 15:19:48 -04:00
Alejandro Alonso
6f83e3c28f
Fix type parsing when preceeded by '-'
2024-09-11 10:28:44 -07:00
swift-ci
da55e84c74
Merge remote-tracking branch 'origin/main' into rebranch
2024-09-05 15:35:33 -07:00
Alejandro Alonso
451e7259a1
Add ValueGenerics experimental feature
2024-09-04 15:13:49 -07:00
Alejandro Alonso
7cd424812f
Move some value checking to desugaring
2024-09-04 15:13:46 -07:00
Alejandro Alonso
f4f60f4344
Remove Value requirement Add GenericTypeParamKind
2024-09-04 15:13:43 -07:00
Alejandro Alonso
7c85261a77
Add runtime support
2024-09-04 15:13:27 -07:00
Alejandro Alonso
3e9c4633ca
Add some new diagnostics and tests
2024-09-04 15:13:27 -07:00
Alejandro Alonso
75c2cbf593
Implement value generics
...
Some requirement machine work
Rename requirement to Value
Rename more things to Value
Fix integer checking for requirement
some docs and parser changes
Minor fixes
2024-09-04 15:13:25 -07:00
swift-ci
b29ebad446
Merge remote-tracking branch 'origin/main' into rebranch
2024-09-04 12:04:17 -07:00
Slava Pestov
f633c16135
RequirementMachine: Re-enable an ASSERT
2024-09-04 10:42:19 -04:00
swift-ci
ee0d59cc91
Merge remote-tracking branch 'origin/main' into rebranch
2024-08-24 12:35:16 -07:00
Slava Pestov
cf784f980e
AST: Remove SubstFlags::AllowLoweredTypes
2024-08-23 13:14:05 -04:00
Ben Barham
467e528200
Merge remote-tracking branch 'origin/main' into manual-rebranch-merge
...
Conflicts:
- `lib/Serialization/ModuleFormat.h` bumped version to account for
differences between main and rebranch.
2024-08-09 15:22:39 -07:00
Slava Pestov
375363a473
AST: Move global conformance lookup entry points to ConformanceLookup.h
2024-08-08 23:35:58 -04:00
swift-ci
9e7bb3d1de
Merge remote-tracking branch 'origin/main' into rebranch
2024-08-06 14:34:29 -07:00
Sima Nerush
6400a294a8
Merge pull request #70227 from simanerush/same-element-requirements
...
[Requirement Machine] Implement same-element requirements.
2024-08-06 14:24:33 -07:00
swift-ci
7f656a16e1
Merge remote-tracking branch 'origin/main' into rebranch
2024-08-02 15:54:53 -07:00
Slava Pestov
db8be791f5
RequirementMachine: Temporarily replace a couple of ASSERT with DEBUG_ASSERT
...
"Fixes" rdar://132236212.
2024-08-02 15:15:35 -04:00
Sima Nerush
0dc6719748
[Requirement Machine] Fix the order of terms with pack element symbols to always appear on the left-hand side of the same-element rewrite rule.
2024-07-15 10:19:32 -07:00
Sima Nerush
1ba38c54f2
[Requirement Machine] When forming requirements from same-element rewrite rules, swap the sides depending on which one is longer once the [element] symbol is dropped.
...
This change fixes the "out-of-order" type parameters error in `GenericSignature::verify`
2024-07-15 10:19:32 -07:00
Sima Nerush
10a4940396
[Requirement Machine] Add ability to prepend a symbol to a term, clean up existing code
2024-07-15 10:19:32 -07:00
Sima Nerush
6393a32a68
[Requirement Machine] Initialize storage for ThePackElementSymbol
2024-07-15 10:19:32 -07:00
Holly Borla
dbda2738a6
[Features] Gate same-element requirements behind an experimental feature flag.
2024-07-15 10:19:32 -07:00
Holly Borla
e6eb5dab79
[Requirement Machine] Stricter verification conditions for element symbols.
2024-07-15 10:19:32 -07:00
Holly Borla
eabaed8a62
[Requirement Machine] Use element symbols for concrete same-element requirements.
2024-07-15 10:19:32 -07:00