Commit Graph

40205 Commits

Author SHA1 Message Date
Allan Shortlidge
b5a36cfdba Merge pull request #71030 from tshortli/resolve-even-more-warnings
Resolve even more warnings
2024-01-19 21:03:03 -08:00
Michael Gottesman
cf2a338afc Merge pull request #71028 from gottesmm/pr-524e0ec6510c6afb2182d3f5538e7c333a323871
[region-isolation] Fix support for GlobalActor guarded variables and wordsmith some diagnostics.
2024-01-19 18:34:13 -08:00
Pavel Yaskevich
57bf9d52b1 Merge pull request #71014 from xedin/inheritedentry-bitfields
[AST] NFC: Convert `InheritedEntry` flags to bitfields
2024-01-19 16:19:47 -08:00
Rintaro Ishizaki
f0cc2ffab4 Merge pull request #70976 from rintaro/macros-moduletrace-rdar110927706
[Macros] Track macro dependency separately in module trace
2024-01-19 16:07:44 -08:00
Allan Shortlidge
3338722e21 NFC: Suppress an unused private member warning in ABI/Task.h. 2024-01-19 15:43:35 -08:00
Michael Gottesman
3641050675 [region-isolation] Wordsmith some diagnostics.
I tried to make them shorter and standardized on "; later accesses could race"
as the mark on a diagnostic that the problem was that a race was occuring
(before we had several small different variations).
2024-01-19 15:38:41 -08:00
Alex Lorenz
ed7ed2d233 Merge pull request #70977 from hyp/eng/clang-nom-type-descr-local
[IRGen][WMO] type descriptors generated for an imported Clang types a…
2024-01-19 14:51:33 -08:00
Rintaro Ishizaki
a61ed80813 [Macros] Track macro dependency separately in module trace
Macro plugins are not normal Swift modules, track them differently.
Add "swiftmacros" field to the JSON file.

rdar://118013482
2024-01-19 12:56:02 -08:00
Michael Gottesman
50aaad376b Merge pull request #70836 from gottesmm/transferring-parameter
[region-isolation] Add support for transferring parameters.
2024-01-19 11:10:58 -08:00
Pavel Yaskevich
7f6a8f865c [AST] NFC: Convert InheritedEntry flags to bitfields 2024-01-19 10:22:39 -08:00
Pavel Yaskevich
6abaf217a3 Merge pull request #70998 from xedin/bitfield-for-protocol-conformance-type
[AST] Augment `ProtocolConformance` and sublcasses to use bitfields for its auxiliary information
2024-01-19 09:30:56 -08:00
Alex Lorenz
57f3d2386f [IRGen][WMO] type descriptors generated for an imported Clang types are always known local declarations
This fixes a LNK4217 linker warning when building code on Windows
2024-01-19 08:01:50 -08:00
Steven Wu
746de8b5cd Merge pull request #70974 from cachemeifyoucan/eng/PR-121082031
[ExplicitModule] Fix `canImport` lookup for swift explicit module build
2024-01-18 15:39:29 -08:00
Pavel Yaskevich
60badd6de3 [AST] Convert BuiltinProtocolConformance to use bitfield for its kind 2024-01-18 15:00:23 -08:00
Pavel Yaskevich
89b69930fc [AST] Convert NormalProtocolConformance to use bitfields for its aux information (state, flags etc.) 2024-01-18 15:00:12 -08:00
Pavel Yaskevich
4bef068c59 [AST] Convert ProtocolConformance::Kind into a bitfield 2024-01-18 14:58:43 -08:00
Steven Wu
5c8e340755 Merge pull request #70739 from cachemeifyoucan/eng/PR-120552768
Fix build failure for verify module interface during cache build
2024-01-18 14:20:03 -08:00
Michael Gottesman
eb573092d1 [region-isolation] Teach the checker that a use of a local value after being strongly transferred is an error.
Before the previous patch, we were just getting lucky on macOS due to UB. Now
that the UB is fixed, we correctly crash without this commit since we were not
pattern matching the simple case of a local value that was transferred and used
later.
2024-01-18 13:20:28 -08:00
Michael Gottesman
9303c40162 [region-isolation] Teach region isolation that assigning into a transferring parameter is a transfer of the value.
The specific semantics is if we assign into a transferring parameter's field,
then we "merge" src's value into the transferring parameter, so we
conservatively leave the region of the transferring parameter alone. If we
assign over the entire transferring parameter, we perform an assign fresh since
any value that used to be in the transferring parameter cannot reference
anything in its new value since they are all gone.
2024-01-18 13:20:28 -08:00
Michael Gottesman
26a75fe5e6 [region-isolation] Implement checking for transferring parameters.
NOTE: This does not handle yet assignment into transferring parameters. In the
next commit, I am going to teach the checker that assigning into such a
parameter is a transfer.
2024-01-18 13:20:28 -08:00
Michael Gottesman
9513d298ec [region-isolation] Add parsing/serialization/type system support for a transferring OwnershipSpecifier. 2024-01-18 13:20:28 -08:00
Steven Wu
4fb7abc9f9 [ExplicitModule] Fix canImport lookup for swift explicit module build
Previously, canImport lookup is not completely working with explicit
module due to two issues:
* For clang modules, canImport check still do a full modulemap lookup
  which is repeated work from scanner. For caching builds, this lookup
  cannot be performed because all modulemap and search path are dropped
  after scanning.
* For swift module, if the canImport module was never actually imported
  later, this canImport check will fail during the actual compilation,
  causing different dependencies in the actual compilation.

To fix the problem, first unified the lookup method for clang and swift
module, which will only lookup the module dependencies reported by
scanner to determine if `canImport` succeed or not. Secondly, add all
the successful `canImport` check modules into the dependency of the
current module so this information can be used during actual
compilation.

Note the behavior change here is that if a module is only checked in
`canImport` but never imported still needs to be built. Comparing to
implicit module build, this can bring in additional clang modules if
they are only check inside `canImport` but should not increase work for
swift modules (where binary module needs to be on disk anyway) or the
most common usecase for `canImport` which is to check the same module
before importing.

rdar://121082031
2024-01-18 10:31:33 -08:00
Hamish Knight
f82d7f7779 Merge pull request #70984 from hamishknight/fix-diag
[Sema] Avoid mentioning `then` in a diagnostic
2024-01-18 17:44:14 +00:00
Allan Shortlidge
07a67437be Merge pull request #64656 from artemcm/LegacyDeathBed
Deprecate Legacy driver by removing incremental builds and adding warnings
2024-01-18 08:55:59 -08:00
Alastair Houghton
0d1559ccd8 Merge pull request #70963 from al45tair/eng/PR-121122202
[Threading] Add the correct scope for lazy_mutex_handle.
2024-01-18 14:58:26 +00:00
Hamish Knight
72cbea678a [Sema] Avoid mentioning then in a diagnostic
This is still an experimental feature, so avoid
mentioning it in this diagnostic.
2024-01-18 14:52:20 +00:00
Hamish Knight
f6b7301259 Merge pull request #70591 from hamishknight/doritos-and-fritos
[AST] A couple of PatternBindingInitializer cleanups
2024-01-18 11:33:19 +00:00
Anthony Latsis
96ee57b00b Merge pull request #70623 from AnthonyLatsis/init-sema
Move unqualified `init` diagnosis from Parse to Sema
2024-01-18 03:53:33 +03:00
Slava Pestov
2246dd13e1 Merge pull request #70951 from slavapestov/sendable-type-and-more
Fix @retroactive for conditional conformances, and more
2024-01-17 18:28:45 -05:00
Slava Pestov
5249432dcc Sema: Don't need to pass the ConformanceChecker around so much
I want to slim down ConformanceChecker because it doesn't really fit
with request-driven resolution of witnesses. This is a first step
towards that.
2024-01-17 13:08:46 -05:00
Pavel Yaskevich
6cdab78028 Merge pull request #70867 from xedin/dynamic-enforcement-of-witness-isolation-with-preconcurrency
[TypeChecker/SILGen] Dynamic enforcement of witness/objc isolation with @preconcurrency attribute
2024-01-17 10:01:37 -08:00
Alastair Houghton
f8f2751e1b [Threading] Add the correct scope for lazy_mutex_handle.
Because we're mentioning the type in a macro and it gets used elsewhere,
we need to be explicit that the type is inside threading_impl.

rdar://121122202
2024-01-17 17:19:08 +00:00
Hamish Knight
af82121286 [AST] Make PatternBindingInitializer::setBinding private
And add some assertions to ensure we don't attempt
to re-set the binding or index (the parent context
can unfortunately change currently).
2024-01-17 16:02:33 +00:00
Hamish Knight
990d15567d [AST] Split up PatternBindingDecl::setPattern
Most clients only want to set one of the two
parameters, split it into `setPattern` and
`setInitContext` (the latter of which now
handles calling `setBinding`).
2024-01-17 16:02:33 +00:00
Hamish Knight
848574080a [CS] Use correct DeclContext when solving initializations
Use the PatternBindingInitializer context if we
have one. This also uncovered a parser issue where
we would mistakenly create a
PatternBindingInitializer in top-level code after
parsing the initializers.
2024-01-17 16:02:33 +00:00
Hamish Knight
47f7a31095 [AST] Tighten up type of InitContext
Switch from promising a DeclContext to a
PatternBindingInitializer.

This has a couple of benefits:
- It eliminates a few places where we were force
`cast`'ing to PatternBindingInitializer.
- It improves the clarity of what's being stored,
it's not whatever the parent context of the
initializer is, it's specifically the
PatternBindingInitializer context if it exists.
2024-01-17 16:02:33 +00:00
Hamish Knight
3399b79c81 [AST] NFC: Remove some unused code 2024-01-17 16:02:33 +00:00
Hamish Knight
28c7d26683 [AST] Remove SerializedDefaultArgumentInitializer
This stores the same state as
DefaultArgumentInitializer, use that instead.
2024-01-17 16:02:32 +00:00
Hamish Knight
e3261f6b04 [AST] Remove SerializedPatternBindingInitializer
This stores the same state as
PatternBindingInitializer, we can use that
instead.
2024-01-17 16:02:32 +00:00
Hamish Knight
fb0a75fe55 [AST] NFC: Introduce PatternBindingInitializer::create 2024-01-17 16:02:32 +00:00
Slava Pestov
a7f484b3a4 AST: Clean up isSendableType() 2024-01-16 22:44:43 -05:00
Slava Pestov
166d059625 Merge pull request #70937 from slavapestov/rename-conformance-lookup
TypeChecker::conformsToProtocol() => ModuleDecl::checkConformance()
2024-01-16 22:21:04 -05:00
Artem Chikin
73b01dccfc Remove incremental builds from the Legacy driver
The C++-based driver is deprecated and this will help reduce the code surface that requires maintenance as the legacy driver is fully sunset.
2024-01-16 16:34:51 -08:00
Dario Rexin
06b92719c1 [SILOpt] Represent _TrivialStride pre-specializations with vector types (#70938)
rdar://121071710

Currently it uses builtin integers, which round up to the next power of 2, which is not what we want here. Instead it should use builtin vectors of uint8 and a number of elements equal to the stride in bytes.
2024-01-16 16:13:19 -08:00
Doug Gregor
8b514ec029 Merge pull request #70902 from DougGregor/isolation-macro
Implement `#isolation` macro to produce the isolation of the current context
2024-01-16 14:27:00 -08:00
Doug Gregor
255009dddb Implement #isolation macro to produce the isolation of the current context
Introduce a new expression macro that produces an value of type
`(any AnyActor)?` that describes the current actor isolation. This
isolation will be `nil` in non-isolated code, and refer to either the
actor instance of shared global actor in other cases.

This is currently behind the experimental feature flag
OptionalIsolatedParameters.
2024-01-16 14:25:51 -08:00
Slava Pestov
14d1fcb51a AST: TypeChecker::conformsToProtocol() => ModuleDecl::checkConformance() 2024-01-16 17:08:00 -05:00
Pavel Yaskevich
1caafee3cf [Sema] Diagnose places where @preconcurrency attribute on conformance has no effect 2024-01-16 11:51:49 -08:00
Pavel Yaskevich
e8b7a26eac [AST] Add a flag to indicate that the conformance is @preconcurrency 2024-01-16 11:51:42 -08:00
Slava Pestov
1e950b1725 AST: Move checkGenericArguments() to AST and rename to checkRequirements() 2024-01-16 14:47:50 -05:00