Commit Graph

19872 Commits

Author SHA1 Message Date
Allan Shortlidge
8052e3f9dc AST: Remove 'OS' from AvailabilityContext member names.
An `AvailabilityContext` represents an abstract version range in which
something is available. In the future, these version ranges may not necessarily
always correspond to operating system version ranges.

NFC.
2024-09-02 16:47:14 -07:00
Allan Shortlidge
018234fabf AST: Remove IsSPI from AvailabilityContext.
It only existed to make `Decl::isAvailableAsSPI()` convenient to implement.

NFC.
2024-09-02 16:47:14 -07:00
Slava Pestov
21cc894a6c AST: Allow nested protocol types in ExistentialGeneralization 2024-09-02 17:14:36 -04:00
Slava Pestov
36683a804c AST: Handle missing cases in findGenericParameterReferencesRec() 2024-09-02 17:14:22 -04:00
Slava Pestov
56cefdc83f AST: Clean up findGenericParameterReferences() 2024-09-02 16:12:31 -04:00
Konrad `ktoso` Malawski
c55ad6fa88 Merge branch 'main' into mpokhylets/isolated-deinit 2024-09-02 23:16:17 +09:00
Egor Zhdan
39b8b3c67e Merge pull request #76106 from swiftlang/egorzhdan/cxx-mutable-rac
[cxx-interop] Add `CxxMutableRandomAccessCollection` protocol
2024-09-02 11:35:43 +01:00
Slava Pestov
aa81ce3f6c AST: Use new form of getOpenedExistentialSignature() in getMinimalCanonicalType() 2024-09-01 18:03:47 -04:00
Slava Pestov
cf0fdc0917 AST: Add new implementation of getOpenedExistentialSignature()
This will replace all existing usages of the old implementation.
2024-09-01 18:03:26 -04:00
Slava Pestov
44dbebdd9e Merge pull request #76200 from slavapestov/type-subst-invariant
AST: Type substitution can skip subtrees that won't change
2024-09-01 17:55:11 -04:00
Slava Pestov
593358add1 AST: Type substitution can skip subtrees that won't change 2024-09-01 12:50:17 -04:00
Hamish Knight
9bd0d9b7e4 [Sema] Walk separately-checked closures normally in MiscDiagnostics
We no longer need to make any special affordances
for separately-checked closures, walk them normally.
2024-08-31 12:47:46 +01:00
Slava Pestov
73ade1dd4a Merge pull request #76180 from slavapestov/fix-issue-76164
AST: Simplify ProtocolCompositionType::getMinimalCanonicalType() and remove bogus assert
2024-08-30 22:05:18 -04:00
Doug Gregor
a73711ef4b Implement extractInlinableText with swift-syntax
Replace the existing C++ implementation of extractInlinableText with
a new implementation based on swift-syntax. It uses SwiftIfConfig to
remove inactive regions (with a special mode), and a new compiler-only
entrypoint in the library to remove comments and `#sourceLocation`.
2024-08-30 16:43:41 -07:00
Slava Pestov
e79763b590 AST: Factor out mapLocalArchetypesOutOfContext() utility function 2024-08-30 15:24:00 -04:00
Slava Pestov
52ce02eb96 AST: Remove ArchetypeType::getRoot() 2024-08-30 15:24:00 -04:00
Slava Pestov
21905afd85 AST: Simplify ProtocolCompositionType::getMinimalCanonicalType() and remove bogus assert
Fixes https://github.com/swiftlang/swift/issues/76164
2024-08-30 15:22:47 -04:00
Gabor Horvath
0eab959d2b [cxx-interop] Do not export enums with indirect associated values
We do not support any sort of indirect enums yet, the code gets into an
infinite recursion. Let's skip exporting these types to C++ for now
until proper support is implemented.

rdar://134852756
2024-08-30 13:34:28 +01:00
Slava Pestov
d36dcea88d Merge pull request #76154 from slavapestov/combine-substitution-maps
Move combineSubstitutionMaps() to SILOptimizer and fix an assertion
2024-08-29 20:51:49 -04:00
Slava Pestov
43c7310288 SILOptimizer: Move combineSubstitutionMaps() to Devirtualize.cpp 2024-08-29 16:18:14 -04:00
Hamish Knight
4987c3b970 Merge pull request #76122 from hamishknight/platform-2
[AST] Account for non-user modules in `isPrivateStdlibDecl`
2024-08-29 11:25:54 +01:00
Mykola Pokhylets
e0ad7bde82 Merge branch 'main' into mpokhylets/isolated-deinit
# Conflicts:
#	include/swift/Basic/Features.def
#	lib/AST/ASTPrinter.cpp
#	lib/AST/FeatureSet.cpp
2024-08-29 11:28:43 +02:00
Allan Shortlidge
8503f72b11 Merge pull request #76111 from tshortli/lazy-typecheck-lazy-var-in-inlinable-func
SILGen: Only skip decls nested in functions when the function is skipped
2024-08-28 14:52:59 -07:00
Pavel Yaskevich
6465bdc6e1 Merge pull request #76042 from xedin/rdar-133415157
[Sema/SILGen] Emit dynamic actor isolation checks for closures
2024-08-28 13:06:55 -07:00
Hamish Knight
1cb0f8fdd5 [AST] Rename isPrivateStdlibDecl -> isPrivateSystemDecl
This better reflects what we're actually checking
here.
2024-08-28 18:31:51 +01:00
Hamish Knight
05954eaa90 [AST] Account for non-user modules in isPrivateStdlibDecl
Consider both non-user and system modules when
checking whether an underscored decl should be
considered private.

rdar://131854240
2024-08-28 18:31:51 +01:00
Egor Zhdan
0ab681514b [cxx-interop] Add CxxMutableRandomAccessCollection protocol
This conforms mutable C++ container types, such as `std::vector`, to `MutableCollection` via a new overlay protocol `CxxMutableRandomAccessCollection`.

rdar://134531554
2024-08-28 12:43:42 +01:00
Ben Barham
b82c6bd567 [Cleanup] Rename another endswith
`endswith` is renamed to `ends_with` upstream.
2024-08-27 16:43:28 -07:00
Allan Shortlidge
185022cbb5 SILGen: Only skip decls nested in functions when the function is skipped.
If a function body is emitted, all of the declarations inside that function
body must be emitted, too. Previously, lazy var initializers were being skipped
regardless of whether the function containing them was skipped, resulting in
SIL verification errors (which were correctly predicting linker errors).

Resolves rdar://134708502.
2024-08-27 14:29:08 -07:00
Steven Wu
d53f4fc3fc Merge pull request #76088 from cachemeifyoucan/eng/PR-134593841
[Caching] CASFS need to include blocklist
2024-08-27 11:16:06 -07:00
Hamish Knight
2fdf43a6fd Merge pull request #76057 from hamishknight/platform
[AST] Treat platform modules as non-user
2024-08-27 16:03:38 +01:00
Steven Wu
fd6707e312 [Caching] CASFS need to include blocklist
There are blocklist items can affect code-generation, thus the
block-list needs to be included in the CASFS for compilation.

rdar://134593841
2024-08-26 11:49:42 -07:00
Michael Gottesman
da597be76d Merge pull request #76075 from gottesmm/rdar133531625
[region-isolation] Treat as Sendable values that are meant to be ignored since they are marked with preconcurrency
2024-08-24 22:26:00 -04:00
Slava Pestov
8315120eaf Merge pull request #76051 from slavapestov/archetype-get-parent
AST: Remove ArchetypeType::getParent()
2024-08-24 15:31:01 -04:00
Michael Gottesman
49eee05647 [region-isolation] Treat as Sendable values that are meant to be ignored since they are marked with preconcurrency
rdar://133531625
2024-08-24 13:14:39 -04:00
Michael Gottesman
bbc4816861 [sema] Move getConcurrencyDiagnosticBehaviorLimit and hasExplicitSendableConformance out of Sema and into libAST.
I am going to expose this on TypeBase, so I am attempting to prevent a layering
violation in between AST and Sema.
2024-08-23 20:42:51 -04:00
Slava Pestov
4d2b4f4b73 AST: Remove ArchetypeType::getParent() 2024-08-23 16:45:03 -04:00
Slava Pestov
a275780bdb AST: Simplify SubstitutionMap::lookupSubstitution() 2024-08-23 16:45:03 -04:00
Slava Pestov
632fd49f07 AST: Simplify TypeSubstituter::transformPrimaryArchetypeType() 2024-08-23 16:11:28 -04:00
Slava Pestov
7732c6a712 AST: Simplify TypeSubstituter::transformLocalArchetypeType() 2024-08-23 14:28:35 -04:00
Slava Pestov
0bfbc53363 AST: Simplify TypeSubstituter::transformOpaqueTypeArchetypeType() 2024-08-23 13:56:18 -04:00
Steven Wu
7ed9a52633 [PrefixMap] Remap clang cc1 args when building swift interfaces
Fix a bug that swift clang importer is not setup correctly when prefix
map is used. There are two separate issues:
* CC1 args used to setup clang import when building swift (interface and
  sources) are not correctly remapped.
* When loading SDKInfo from SDK path, the SDKSettings.json is not
  loading from VFS, thus the file cannot be loaded from remapped path.

rdar://134458611
2024-08-23 10:32:20 -07:00
Slava Pestov
cf784f980e AST: Remove SubstFlags::AllowLoweredTypes 2024-08-23 13:14:05 -04:00
Hamish Knight
940f5f7c2a [AST] Treat platform modules as non-user
Modules defined within the SDK are considered
non-user modules, extend this to any module found
within the parent platform directory if there is
one. This ensures we include modules such as
XCTest and Testing.

rdar://131854240
2024-08-23 14:23:37 +01:00
Slava Pestov
76ec490119 AST: Split up remaining cases of TypeSubstituter::transform()
Also rename and reformat a few things added recently.
2024-08-22 18:42:19 -04:00
Slava Pestov
da4d076f02 AST: Introduce SubstFlags::SubstitutePrimaryArchetypes 2024-08-22 18:41:14 -04:00
Allan Shortlidge
4420ea853b Sema: Check availability of conformance type witnesses.
The type satisfying a protocol requirement must be at least as available as the
associated type for the requirement.

Resolves rdar://134093006
2024-08-22 15:23:21 -07:00
Pavel Yaskevich
a4d9b3b5b2 [AST] Add a bit to closure expr to indiciate whether it requires dynamic isolation checking
This is an important information for closures because the compiler
might need to emit dynamic actor isolation checks in some circumstances
(i.e. when a closure is isolated and passed to a not fully concurrency
checked API).
2024-08-22 09:57:06 -07:00
Slava Pestov
07b697e178 Merge pull request #76030 from slavapestov/open-existential-get
AST: Remove OpenedArchetypeType::get() overload taking an interface type
2024-08-22 09:32:57 -04:00
Konrad `ktoso` Malawski
1861375f88 [Concurrency] Suggest adding a method, when mutating actor property cross isolation (#75922) 2024-08-22 20:24:39 +09:00