Commit Graph

28619 Commits

Author SHA1 Message Date
Pavel Yaskevich
570eedbdc7 [ConstraintSystem] Update closure inference to support @execution(...) attribute
- Update `ClosureEffectsRequest` to make sure that closure is
marked as `async` when `@execution(...)` attribute is present.

- Update `inferClosureType` to set isolation based on an explicit
`@execution(...)` attribute attached to a closure.
2025-03-12 18:08:53 -07:00
Pavel Yaskevich
e9fd369824 [Sema] Allow use of @execution(...) attribute on closures 2025-03-12 17:29:40 -07:00
Becca Royal-Gordon
7c867ca1da [NFC] Split DeclAttrOptions into two types
We’re running out of bits in DeclAttrOptions, so split it in two: DeclAttrRequirements contains all the `On*` options that describe the declarations allowed to have the attribute, while the other options are now DeclAttrBehaviors.

This commit also sorts the entries in DeclAttr.def by serialization code and improves the formatting of the file.
2025-03-12 14:14:16 -07:00
Tony Allevato
68876a6d4a Merge pull request #76636 from allevato/rich-identifiers
Support raw identifiers (backtick-delimited identifiers containing non-identifier characters).
2025-03-12 14:56:14 -04:00
Anthony Latsis
ae0936f178 Merge pull request #79934 from AnthonyLatsis/no-карри
TypeCheckType: Do not fail after emitting a warning
2025-03-12 18:35:16 +00:00
Pavel Yaskevich
1bd0cd7b94 Merge pull request #79928 from xedin/support-debug-constraints-on-line-for-result-builders
[ResultBuilders] NFC: Support `-debug-constraints{-on-line=}` for dec…
2025-03-12 00:29:41 -07:00
eeckstein
47b449372e Merge pull request #79917 from eeckstein/rename-opened-archetype-type
AST: rename OpenArchetypeType -> ExistentialArchetypeType
2025-03-12 06:01:10 +01:00
Slava Pestov
9e721a35f2 Merge pull request #79914 from slavapestov/retry-removing-one-way-equal
Sema: Mostly remove one-way constraints
2025-03-11 21:24:57 -04:00
Anthony Latsis
89f5066fb4 TypeCheckType: Do not fail after emitting a warning
Also remove the redundant diagnosis altogether. This case is already
handled by the existential syntax checker just fine.
2025-03-12 00:33:18 +00:00
Pavel Yaskevich
6197aab467 [ResultBuilders] NFC: Support -debug-constraints{-on-line=} for declaration transforms 2025-03-11 15:13:58 -07:00
Tony Allevato
a68347f299 [Sema] Validate names of @objc declarations with raw identifiers.
If a decl is exported to Objective-C (explicitly or implicitly), it
must be given an explicit name that is a valid Objective-C identifier.
2025-03-11 17:18:44 -04:00
Erik Eckstein
d225c47d25 AST: rename OpenArchetypeType -> ExistentialArchetypeType
NFC
2025-03-11 20:21:46 +01:00
Slava Pestov
4c60e036ac Merge pull request #79882 from slavapestov/sizeof-constraint
Sema: Optimize Constraint layout to save 24 bytes
2025-03-11 14:30:44 -04:00
Doug Gregor
fed1a74848 Merge pull request #79904 from DougGregor/unsafe-concurrency-cycle
[Strict memory safety] Eliminate false cycle when checking nonisolated(unsafe)
2025-03-11 11:01:09 -07:00
Slava Pestov
6d8b55a9f6 Sema: Split up gatherConstraints() into gatherAllConstraints() and gatherNearbyConstraints()
The two GatherKinds no longer share any implementation, so there's
no point keeping the logic together. Doing this also allows removing
the acceptConstraintFn from gatherAllConstraints(), which further
simplifies depthFirstSearch().
2025-03-11 13:55:40 -04:00
Slava Pestov
2500c83332 Sema: Simplify depthFirstSearch() a bit now that it only has one caller 2025-03-11 13:55:39 -04:00
Slava Pestov
94eff70b1d Sema: Remove DependentComponentSplitterStep 2025-03-11 13:55:39 -04:00
Slava Pestov
917173c7f4 Sema: Remove one-way constraint handling from computeConnectedComponents() 2025-03-11 13:55:39 -04:00
Allan Shortlidge
e68d8edb03 Merge pull request #79902 from tshortli/result-builder-member-import-visibility
Sema: Adjust result builder operation lookup for MemberImportVisibility
2025-03-11 10:45:46 -07:00
Slava Pestov
e48d00d26c Merge pull request #79876 from jameesbrown/pack-generic-param
[CS] Deep-equality match OpenedArchetypeTypes
2025-03-11 10:02:15 -04:00
Anthony Latsis
5a92bc5e12 Merge pull request #79897 from AnthonyLatsis/danaus-plexippus-3
Small adjustments to adoption mode modeling
2025-03-11 11:47:18 +00:00
Doug Gregor
733dd86c92 Merge pull request #79896 from DougGregor/strict-memory-safety-cleanups
Strict memory safety cleanups
2025-03-11 01:26:30 -07:00
Doug Gregor
81e8f75f93 [Strict memory safety] Eliminate false cycle when checking nonisolated(unsafe)
Whenc hecking for nonisolated(unsafe), don't evaluate the full isolation
of the entity, because doing so causes a reference cycle.
2025-03-10 22:59:50 -07:00
Michael Gottesman
04bb69f426 Merge pull request #79727 from gottesmm/pr-025c1133954b74e7b4eda77e1a6f3bcafd4eb6cf
[concurrency] Add initial support for SwiftSettings to control defaultIsolation at the file level.
2025-03-10 22:35:00 -07:00
Allan Shortlidge
7a514c99e2 Sema: Adjust result builder operation lookup for MemberImportVisibility.
To avoid spurious diagnostics about unavailable operations when checking uses
of functions that take result builder closures, lookup of result builder
operations needs to ignore the restrictions of the `MemberImportVisibility`
feature. The result builder transform should simply use the operations that are
found and allow later checks to diagnose the use of inaccessible builder
operations.

Resolves rdar://144100445.
2025-03-10 20:54:41 -07:00
Anthony Latsis
b3df0dcd08 [NFC] Basic: Do not return true in LangOptions::hasFeature if adoption mode
This check is used to enact features, whereas adoption mode should not
change behavior.
2025-03-11 01:14:39 +00:00
Anthony Latsis
6b12faf5c1 [NFC] TypeCheckType: Compute language mode to limit diagnostic behavior for ExistentialAny 2025-03-11 01:14:39 +00:00
Michael Gottesman
f64dd5a8d5 [concurrency] Add initial support for SwiftSettings to control defaultIsolation at the file level.
We introduce a new macro called #SwiftSettings that can be used in conjunction
with a new stdlib type called SwiftSetting to control the default isolation at
the file level. It overrides the current default isolation whether it is the
current nonisolated state or main actor (when -enable-experimental-feature
UnspecifiedMeansMainActorIsolated is set).
2025-03-10 17:33:45 -07:00
Pavel Yaskevich
1e88bc6849 Merge pull request #79828 from xedin/rdar-145103149
[CSBindings] Don't delay inferred loeading-dot base inference if sour…
2025-03-10 17:29:23 -07:00
James Brown
edb0fa7b3d [CS] Deep-equality match OpenedArchetypeTypes
When we have two distinct OpenedArchetypeTypes that have the same
interface type and UUID, we need to match their generic arguments.
2025-03-10 19:19:53 -04:00
Doug Gregor
f404c8a58c [Distributed] Inject "unsafe" expression for synthesized unsafe code 2025-03-10 15:42:25 -07:00
Slava Pestov
83118a73ed Sema: Shave another 8 bytes off of Constraint 2025-03-10 14:53:48 -04:00
Slava Pestov
ada6f77655 Sema: Track solver arena size in statistics 2025-03-10 14:03:05 -04:00
Slava Pestov
a7a19a0915 Sema: Optimize Constraint layout to save 16 bytes
The largest union member was for SyntacticElement constraints;
let's tail-allocate the ContextualTypeInfo instead of storing
one in every constraint.
2025-03-10 13:28:17 -04:00
Rintaro Ishizaki
accd108e4a Merge pull request #79857 from rintaro/retire-pound-diagnostics-decl
[Parse/AST] Remove PoundDiagnosticDecl
2025-03-09 21:23:16 -07:00
Hamish Knight
deac7012cb [AST] Avoid setting questionLoc for implicit OptionalSomePatterns
Instead fix `getSourceRange` to handle cases where the question
location is missing.
2025-03-08 18:45:39 +00:00
Rintaro Ishizaki
5eac58e1e0 [AST] SwitchStmt only hold CaseStmt
Now that there is no way SwitchStmt to hold AST nodes other than
CaseStmt.
2025-03-08 09:14:40 -08:00
Allan Shortlidge
56f7ffd26c Merge pull request #79858 from tshortli/spi-available-attr-diagnostics
Sema: Diagnose `@_spi_available` on declarations that cannot be unavailable
2025-03-08 03:48:56 -08:00
Hamish Knight
a596f23fbf Merge pull request #79850 from hamishknight/key-hack
[Sema] Apply CodingKeys hack to `TypeChecker::lookupUnqualifiedType`
2025-03-08 10:35:16 +00:00
Rintaro Ishizaki
002d7d7cdf [Parse/AST] Remove PoundDiagnosticDecl
There is no reson to make a AST node for '#error' and '#warning'
directives. Parser knows the diagnostics should be emitted or not.
2025-03-07 21:48:01 -08:00
Allan Shortlidge
0fd2f3fc1c Sema: Diagnose @_spi_available on declarations that cannot be unavailable.
The attribute makes the declaration unavailable from the perspective of clients
of the module's public interface and was creating a loophole that admitted
inappropriate unavailability.
2025-03-07 19:44:48 -08:00
Allan Shortlidge
396e8f033b Merge pull request #79849 from tshortli/allow-unavailable-proto-requirements-in-swiftinterface
Sema: Downgrade diagnostics about unavailable requirements in swiftinterfaces
2025-03-07 18:02:26 -08:00
Allan Shortlidge
4276771252 Sema: Consolidate diagnostics for decls that cannot be unavailable. 2025-03-07 17:43:51 -08:00
Evan Wilde
28f96411c9 Merge pull request #79778 from etcwilde/ewilde/yo-dawg-heard-you-liked-swift
CMake: option to disable swift in swift
2025-03-07 13:12:00 -08:00
Hamish Knight
7ae3ccf0bf [Sema] Apply CodingKeys hack to TypeChecker::lookupUnqualifiedType
Currently we handle CodingKeys synthesis in
`TypeChecker::lookupUnqualified`, make sure we do the same in
`TypeChecker::lookupUnqualifiedType`.

rdar://146055457
2025-03-07 21:03:33 +00:00
Allan Shortlidge
6284dd4895 Sema: Downgrade diagnostics about unavailable requirements in swiftinterfaces.
Historically, we've allowed protocol requirements to be written with
`@_spi_available` which makes them unavailable to clients of the public
`.swiftinterface`. Don't diagnose this when checking a `.swiftinterface` since
there's nothing the client can do about it.

Resolves rdar://146334181.
2025-03-07 12:02:42 -08:00
Anthony Latsis
5d92f7953c Merge pull request #79792 from AnthonyLatsis/danaus-plexippus-2
Introduce adoption mode for Swift features (take 2)
2025-03-07 19:47:44 +00:00
nate-chandler
38c8cc8ff4 Merge pull request #77661 from nate-chandler/general-coro/20241115/1
[CoroutineAccessors] Default implementations are transparent.
2025-03-07 11:39:21 -08:00
Pavel Yaskevich
87e3e3d8a1 [CSBindings] Don't delay inferred loeading-dot base inference if source is a contextual type
Transitively inferring a protocol type binding from a contextual
type means that the binding set for a leading-dot member reference
is complete because there could be no other sources of bindings
when expression is connected directly to a contextual type.

Resolves: rdar://145103149
2025-03-06 14:58:21 -08:00
Doug Gregor
0ec13f9a90 Build compiler and runtimes without Swift
Remove dependency on macros from compiler and stdlib build when
bootstrapping the compiler without Swift available.
2025-03-06 13:32:52 -08:00