Skip to content

Merge main 2022-04-01 #4398

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 341 commits into from
Apr 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
341 commits
Select commit Hold shift + click to select a range
d58bd27
Merge pull request #41740 from kavon/assign-actorSystem
kavon Mar 25, 2022
68fc606
[interop] NFC, add a method to print out identifier to clang syntax p…
hyp Mar 25, 2022
7d0215e
RequirementMachine: Tweak rule limit non-termination heuristic
slavapestov Mar 25, 2022
583efb2
Make sure we don't accidentally overflow the DeclAttrOptions bitfield.
DougGregor Mar 25, 2022
26943c5
Revert "AssociatedTypeInference: Delete old code for computing abstra…
AnthonyLatsis Mar 24, 2022
b83137c
[NFC] TypeCheckProtocol: 'AbstractTypeWitnessKind' is no longer useful
AnthonyLatsis Mar 24, 2022
38e48ac
TypeWitnessSystem: Disable by default
AnthonyLatsis Mar 24, 2022
f37ac3e
[NFC] Add a test that does not work with experimental associated type…
AnthonyLatsis Mar 24, 2022
c71b7c5
[ConstraintSystem] Only attempt to infer a type from a default argument
hborla Mar 25, 2022
67c097a
Merge pull request #41948 from ahoppen/pr/migrate-afterpoundexpr-solv…
ahoppen Mar 25, 2022
ef10cd0
[Distributed] Fix generic returning distributed funcs
ktoso Mar 9, 2022
0fdb9a3
[ConstraintSystem] Bail out of inference from default arguments if there
hborla Mar 25, 2022
2025b44
[Distributed] Fix ActorSystem requests on protocols that conform to D…
xedin Mar 25, 2022
466c633
[Distributed] Also cover remote distributed call in test
ktoso Mar 25, 2022
eb6f9e0
Merge pull request #41452 from al45tair/eng/PR-89139049
al45tair Mar 25, 2022
048e41e
Merge pull request #41747 from ktoso/wip-generic-return
swift-ci Mar 25, 2022
ba9f627
minor clean-ups
kavon Mar 25, 2022
b690056
Merge pull request #42004 from AnthonyLatsis/type-witness-system-flagged
AnthonyLatsis Mar 25, 2022
e2a394b
Disable String breadcrumbs tests for freestanding stdlib (#42000)
natecook1000 Mar 25, 2022
fa53218
[Distributed] Remove unused request, small cleanup
ktoso Mar 25, 2022
7eef54f
fix a bug in the ReleaseDevirtualizer pass
eeckstein Mar 24, 2022
85c82b2
Merge pull request #42021 from nkcsgexi/enum-in-array-const
nkcsgexi Mar 25, 2022
6b7ae41
SIL: remove unused instructions thin_function_to_pointer and pointer_…
eeckstein Mar 25, 2022
5acea84
Merge pull request #42025 from ktoso/wip-mini-cleanups
swift-ci Mar 25, 2022
d40e30d
Merge pull request #42017 from slavapestov/rqm-rule-length-heuristic
slavapestov Mar 25, 2022
81f49a8
Merge pull request #42018 from slavapestov/rqm-assoc-type-inference-c…
slavapestov Mar 25, 2022
8dd9182
Adding Syntax Highlighting
Aayush9029 Mar 25, 2022
ff5f1b9
Merge pull request #41929 from bnbarham/ast-manager-use-overlays
bnbarham Mar 25, 2022
3f37fc0
Merge pull request #42016 from angela-laar/async_inout_capture
kavon Mar 25, 2022
e857862
[Demangler] Add a couple of functions back to the minimal build.
al45tair Mar 25, 2022
0ac53e3
Sema: Only warn about `@_originallyDefinedIn` attributes on non-publi…
tshortli Mar 25, 2022
5b7ae4c
Sema: Minor clean up a few `@_originallyDefinedIn` diagnostics.
tshortli Mar 25, 2022
5e50ee8
Add @available attributes on the implicit "extension" for @_nonSendab…
DougGregor Mar 25, 2022
436c7f2
Merge pull request #41988 from xedin/csapply-fix-use-of-incorrect-dc
xedin Mar 25, 2022
02081d7
Make sure we evaluate the a global actor annotation on an extension.
DougGregor Mar 25, 2022
8506d9d
Merge pull request #42022 from hborla/default-argument-fixes
xedin Mar 25, 2022
2392de1
Merge pull request #42028 from Aayush9029/patch-1
swift-ci Mar 25, 2022
0dab1b7
Ensure that lookup of Sendable always considers superclass Sendable.
DougGregor Mar 25, 2022
5b9b497
[TypeChecker] SE-0347: Avoid type inference from caller-site defaults
xedin Mar 25, 2022
9722152
Merge pull request #42029 from al45tair/eng/PR-90839754
al45tair Mar 25, 2022
c03e8b5
Merge pull request #41899 from xedin/rdar-90419017
xedin Mar 25, 2022
68bb691
Merge pull request #42032 from DougGregor/nonsendable-availability
DougGregor Mar 25, 2022
053847a
Merge pull request #42034 from DougGregor/implicit-sendable-require
DougGregor Mar 25, 2022
1601b20
Merge pull request #42033 from DougGregor/validate-global-actor-attr
DougGregor Mar 25, 2022
9d854d1
Merge pull request #42031 from tshortli/originally-defined-in-on-non-…
tshortli Mar 25, 2022
0c27193
Merge pull request #42014 from tshortli/allow-back-deploy-attr-on-cor…
tshortli Mar 25, 2022
6f68eae
IRGen: Artificially pad async let entry point contexts.
jckarter Mar 25, 2022
373b9e1
[Build] Properly respect the darwin-crash-reporter-client setting.
al45tair Mar 25, 2022
6462b0d
[MiscDiagnostics] Fix a crash in `OpaqueUnderlyingTypeChecker`
xedin Mar 25, 2022
0c7707f
Derive nonisolated members for protocol conformances
DougGregor Mar 26, 2022
1b0759d
Merge pull request #42020 from slavapestov/rqm-test-case
slavapestov Mar 26, 2022
12095cb
Merge pull request #42038 from al45tair/eng/PR-90839754-2
swift-ci Mar 26, 2022
d8215bb
RequirementMachine: Rework 'implied rules' computation in computeRedu…
slavapestov Mar 25, 2022
06a25fa
RequirementMachine: Don't normalize replacement paths for redundant r…
slavapestov Mar 25, 2022
6110866
RequirementMachine: Propagate requirement IDs only once
slavapestov Mar 25, 2022
53617f0
Merge pull request #42036 from xedin/dont-infer-from-magic-defaults
xedin Mar 26, 2022
3c8405a
Merge pull request #42041 from DougGregor/derive-nonisolated-witnesses
DougGregor Mar 26, 2022
7c226dd
Merge pull request #42035 from slavapestov/rqm-remove-redundant-rule-…
slavapestov Mar 26, 2022
af99ac5
RequirementMachine: Add -debug-requirement-machine=timers
slavapestov Mar 26, 2022
3777054
RequirementMachine: Fix dump() output for a recent change
slavapestov Mar 26, 2022
3d2559f
RequirementMachine: Don't skip subst-simplified rules when importing
slavapestov Mar 26, 2022
4d097da
RequirementMachine: Re-use requirement machines constructed by minimi…
slavapestov Mar 26, 2022
08aab38
RequirementMachine: Don't record rewrite loops for protocol signature…
slavapestov Mar 26, 2022
e2a509c
RequirementMachine: Freeze machines built from signatures immediately
slavapestov Mar 26, 2022
0045840
Merge pull request #42042 from slavapestov/rqm-reuse-machines
slavapestov Mar 26, 2022
64ff2b2
[NFC] ASTDumper: Tweak AppliedPropertyWrapperExpr dumping
AnthonyLatsis Mar 11, 2022
f257252
[NFC] CSApply: Introduce a generalized routine for building single cu…
AnthonyLatsis Mar 14, 2022
969324d
[NFC] CSApply: Introduce generalized and convenience routines for bui…
AnthonyLatsis Mar 14, 2022
5a90108
CSApply: Replace some 'buildPropertyWrapperFnThunk' calls with the ne…
AnthonyLatsis Mar 14, 2022
89667f8
CSApply: Refactor 'buildCurryThunk' to use 'buildSingleCurryThunk'
AnthonyLatsis Mar 13, 2022
9dccd33
[NFC] CSApply: Delete the now dead 'buildPropertyWrapperFnThunk'
AnthonyLatsis Mar 14, 2022
b06b66d
CSApply: Use 'buildSingleCurryThunk' instead of 'buildCurryThunk' whe…
AnthonyLatsis Mar 14, 2022
87bdddd
CSApply: Supplant 'buildCurryThunk' with a routine that builds a doub…
AnthonyLatsis Mar 15, 2022
d877ff9
[NFC] CSApply: Delete the now dead 'buildCurryThunk'
AnthonyLatsis Mar 15, 2022
48b491d
AST: Avoid invoking TypeAliasDecl::getUnderlyingType() from isInteres…
slavapestov Mar 26, 2022
b859ac1
RequirementMachine: Unwrap outer TypeAliasType on protocol typealiases
slavapestov Mar 26, 2022
cdcc8ed
RequirementMachine: Enable loop normalization by default
slavapestov Mar 27, 2022
7fccd25
Merge pull request #42043 from slavapestov/rqm-diagnostics-request-cycle
slavapestov Mar 27, 2022
069653d
Merge pull request #42030 from eeckstein/remove-unused-instructions
eeckstein Mar 27, 2022
21c5b88
Merge pull request #41975 from slavapestov/rqm-loop-normalization
slavapestov Mar 27, 2022
132334c
RequirementMachine: Add debugging flag to disable re-using requiremen…
slavapestov Mar 27, 2022
dbb6c81
RequirementMachine: Add some test cases reduced from https://github.c…
slavapestov Mar 27, 2022
01e0f37
[NFC] Infrastructure to avoid storing simple generic params in metadata
rjmccall Mar 27, 2022
63db545
[NFC] Add a utility to add the elements of a pack to a vector
rjmccall Mar 27, 2022
3dd66b7
Merge pull request #42044 from slavapestov/rqm-test-cases
slavapestov Mar 27, 2022
2021a73
Merge pull request #42026 from eeckstein/fix-release-devirtualizer
eeckstein Mar 27, 2022
7dd6f84
[test] Remove some Python 2 logic (#42045)
dduan Mar 27, 2022
06a0462
[benchmark] Remove Python 2 logic (#42048)
dduan Mar 27, 2022
caa9758
[addr-move-function] Make sure to insert the debug_value for a reinit…
gottesmm Mar 27, 2022
de1bd2d
[SR-16058][Sema] Consider wrapping type variable layers of optionalit…
LucianoPAlmeida Mar 27, 2022
a2f6dd4
[NFC] Appropriately delete and noexcept TaggedUnion's special members
rjmccall Mar 27, 2022
a986d74
[NFC] Implement a small DSL to create metadata objects in unit tests
rjmccall Mar 27, 2022
148357f
Implement extended existential shapes and type metadata.
rjmccall Mar 27, 2022
17cc37e
[move-function] Add tests for debug info for owned arguments.
gottesmm Mar 27, 2022
11a66dc
Make spi-available-inline test target dynamic
LucianoPAlmeida Mar 27, 2022
c3c9b1b
Merge pull request #42047 from rjmccall/extended-existential-type-met…
rjmccall Mar 28, 2022
76f21b9
cmake: fix the library search path for bootstrapping libraries
eeckstein Mar 28, 2022
f9b6796
Merge pull request #42058 from eeckstein/fix-lib-search-dir
swift-ci Mar 28, 2022
d323340
Fix case of filenames to match files on disk (#42040)
tbkka Mar 28, 2022
693a8bd
Merge pull request #42037 from jckarter/async-let-work-around-allocat…
jckarter Mar 28, 2022
a620902
Merge pull request #42039 from xedin/rdar-90456579
xedin Mar 28, 2022
0c2b841
[CSApply] NFC: Remove unused `cs` variable
xedin Mar 28, 2022
d6d2189
Handle output file maps that use the key "objc-header".
DougGregor Mar 28, 2022
5f99c31
Merge pull request #42053 from gottesmm/addr-move-function-fix-and-mo…
gottesmm Mar 28, 2022
4db1f7d
Map case variable types out of context.
DougGregor Mar 28, 2022
425d457
[SIL Opaque values] Add support for unchecked_bitwise_cast in Address…
meg-gupta Mar 28, 2022
fdae97a
[gyb] Remove Python 2 (#42046)
dduan Mar 28, 2022
5fc282d
[NFC] TypeChecker: Allow to pass SubstOptions to the non-diagnosing '…
AnthonyLatsis Jan 27, 2022
0b3ac2b
[NFC] TypeChecker: Use the non-diagnosing 'checkGenericArguments' in …
AnthonyLatsis Jan 27, 2022
d2751bf
TypeChecker: Introduce an alternative 'checkGenericArguments' for out…
AnthonyLatsis Jan 28, 2022
6450dc2
[NFC] TypeChecker: Extract requirement failure diagnosis from 'checkG…
AnthonyLatsis Jan 28, 2022
f39464b
TypeChecker: Replace calls to the old 'checkGenericArguments' with 'c…
AnthonyLatsis Jan 28, 2022
bfbdbf6
[NFC] TypeChecker: Make gatherGenericParamBindingsText static and pla…
AnthonyLatsis Jan 28, 2022
3f37b7c
[NFC] TypeChecker: Remove the old diagnosing 'checkGenericArguments'
AnthonyLatsis Jan 28, 2022
4bbad02
[NFC] Supplant RequirementCheckResult with CheckGenericArgumentsResul…
AnthonyLatsis Jan 28, 2022
24cfa38
Add RegexBuilder module.
rxwei Mar 28, 2022
0fba610
Merge pull request #42062 from DougGregor/closure-with-case-archetype
DougGregor Mar 28, 2022
ba7f301
ConformanceChecker: Always diagnose a conformance failure if the requ…
AnthonyLatsis Jan 28, 2022
945790a
`as!` and `as?` also indicate suppression of implicit existential ope…
DougGregor Mar 28, 2022
9733b86
Merge pull request #42051 from LucianoPAlmeida/minor-test-m1
LucianoPAlmeida Mar 28, 2022
a5adc4c
Merge pull request #42060 from xedin/csapply-remove-unused-var
xedin Mar 28, 2022
1232424
RemoteMirror generic multi-payload-enum fixes (#41903)
tbkka Mar 28, 2022
2d6e5b8
Merge pull request #41074 from AnthonyLatsis/miss-conf-error
AnthonyLatsis Mar 28, 2022
576d1ac
Merge pull request #42067 from DougGregor/suppress-implicit-opening-b…
DougGregor Mar 28, 2022
d00ea98
Merge pull request #42061 from DougGregor/output-file-map-objc-header
DougGregor Mar 28, 2022
1977a68
Fix statically linked concurrency on Linux
etcwilde Mar 28, 2022
67311e5
[AST] Augment OpaqueTypeDecl to store conditionally available alterna…
xedin Mar 28, 2022
a5a50a3
[AST] NFC: Rename underlying type accessors of `OpaqueTypeDecl`
xedin Mar 28, 2022
7332e4b
[Distributed] avoid double typechecking dist func decl
ktoso Mar 29, 2022
ce7d813
[stdlib] remove preconditions from compatibility entry point
glessard Mar 29, 2022
1e4563a
[test] Restrict spi-available inline to macosx only
LucianoPAlmeida Mar 29, 2022
0ca0629
Suppress opened existentials for self-conforming existential metatype…
DougGregor Mar 29, 2022
5b0d1fd
Don't open existentials for library builtin shims
DougGregor Mar 29, 2022
a631d8a
RequirementMachine: Write some comments
slavapestov Mar 28, 2022
dd0b140
Merge pull request #42077 from DougGregor/implicit-opening-cleanups
DougGregor Mar 29, 2022
fdca0ad
Merge pull request #42078 from slavapestov/rqm-comments
slavapestov Mar 29, 2022
1cea2f5
Merge pull request #42075 from LucianoPAlmeida/fix-test-spi
gottesmm Mar 29, 2022
3cfbe03
RequirementMachine: Simplify getTypeForSymbolRange() a bit
slavapestov Mar 29, 2022
66999ce
Merge pull request #42065 from rxwei/regex-builder-module
rxwei Mar 29, 2022
3100693
Tests: Use `REQUIRES: maccatalyst_support` instead of `REQUIRES: OS=m…
tshortli Mar 28, 2022
e0d7a3e
sema: allow unavailable context to refer SPI-available decls
nkcsgexi Mar 29, 2022
b080190
Merge pull request #42079 from slavapestov/rqm-simplify-type-for-term
slavapestov Mar 29, 2022
225a5ef
Merge pull request #42071 from etcwilde/ewilde/link-dispatch-blocks-f…
etcwilde Mar 29, 2022
8c7e42a
[build-presets] Disable SourceKit-LSP tests on Linux Incremental
hamishknight Mar 29, 2022
a49548c
Merge pull request #42080 from nkcsgexi/90938725
nkcsgexi Mar 29, 2022
ad2f73a
RequirementMachine: More comments
slavapestov Mar 29, 2022
d996b98
Merge pull request #42064 from meg-gupta/opaquevaluework
meg-gupta Mar 29, 2022
30034d3
Merge pull request #42068 from tshortli/use-requires-maccatalyst-supp…
tshortli Mar 29, 2022
3e739f6
Merge pull request #42076 from glessard/se-withMemoryRebound
glessard Mar 29, 2022
c641064
Frontend: Add a separate inlining version floor for the macCatalyst p…
tshortli Mar 29, 2022
caf83c2
[cxx-interop] Import const-refs as value types when importing clang f…
zoecarver Mar 11, 2022
efd1965
Revert "Don't open existentials for library builtin shims"
DougGregor Mar 29, 2022
0927c9f
Restrict implicit opening of existentials based on the generic functi…
DougGregor Mar 29, 2022
3b523d5
[TypeChecker] Allow opaque to have multiple underlying types based on…
xedin Mar 29, 2022
f7902a6
[cxx-interop] Emit C++ inline function thunks that with correct primi…
hyp Mar 29, 2022
517dbcf
Tests: Mark the attr_backDeploy_evolution.swift test case unsupported…
tshortli Mar 29, 2022
513507e
[interop] refactor PrimitiveTypeMapping to use one struct regardless …
hyp Mar 29, 2022
01d54da
[TypeChecker] SE-0347: Allow same-type requirements connecting depend…
xedin Mar 29, 2022
16c8d0b
[cxx-interop] Bail on parameter that are reference types to dependent…
zoecarver Mar 11, 2022
937f6d6
Merge pull request #41782 from zoecarver/fix-import-fn-type-const-ref
zoecarver Mar 29, 2022
edc49bc
Merge pull request #42085 from DougGregor/implicit-open-generic-func-…
DougGregor Mar 29, 2022
d76c45d
[interop] NFC, refactor clang function printer to share code between …
hyp Mar 29, 2022
acddc6f
Merge pull request #42084 from tshortli/test-maccatalyst-min-inlining
tshortli Mar 29, 2022
1b4b5f5
Merge pull request #42088 from tshortli/disable-backdeploy-evolution-…
swift-ci Mar 29, 2022
71d95b8
[interop] fix the test/PrintAsObjC/empty.swift for C++ interop
hyp Mar 29, 2022
6f71581
[NFC] Thread import diagnostics through ImportType
beccadax Mar 30, 2022
a281feb
[NFC] Factor out ImportTypeAttrs
beccadax Mar 24, 2022
8e85e1e
[NFC] Eliminate `applyParamAttributes()`
beccadax Mar 25, 2022
0d100e6
Merge pull request #42074 from ktoso/wip-avoid-double-typechecking
ktoso Mar 30, 2022
192c52f
[NFC] Integrate ImportTypeAttrs into importType()
beccadax Mar 30, 2022
a57e71c
Import swift_attr(“@Sendable”) for result types
beccadax Mar 25, 2022
e512e7a
[RequirementMachine] Add a RequirementError for diagnosing a conflicting
hborla Mar 21, 2022
99f5e36
[RequirementMachine] Compute and diagnose conflicting rules in the mi…
hborla Mar 21, 2022
deb62f7
[RequirementMachine] Add a helper method to RequirementMachine to com…
hborla Mar 22, 2022
caee699
[RequirementMachine] Mention the type parameter that is the subject of
hborla Mar 22, 2022
964c11a
[RequirementMachine] Consolidate the various RequirementError::Kind c…
hborla Mar 23, 2022
31028e5
[RequirementMachine] When computing conflict diagnostics, only comput…
hborla Mar 23, 2022
a4230a6
[RequirementMachine] Simplify computing and emitting conflict diagnos…
hborla Mar 24, 2022
f52593b
[RequirementMachine] Record the sugared 'Self' type parameter when
hborla Mar 25, 2022
b681b0a
Merge pull request #41810 from zoecarver/fix-crash-ref-to-depentent-p…
zoecarver Mar 30, 2022
8ea6338
Add regression test for https://bugs.swift.org/browse/SR-10792
slavapestov Mar 29, 2022
84347e5
[Concurrency] Avoid redundant conformance warning on Actor
ktoso Mar 30, 2022
c143c55
[AST] OpaqueDecl: Simplify storage of conditionally available alterna…
xedin Mar 30, 2022
6a6e9b0
Merge pull request #42090 from hyp/i/cxxfuncprim
hyp Mar 30, 2022
43a25e8
[Wasm][IRGen] Add initial support for absolute function pointer
kateinoigakukun Mar 30, 2022
4bde3ba
Merge pull request #42093 from apple/ktoso-patch-11
ktoso Mar 30, 2022
ab1a989
Merge pull request #41488 from kateinoigakukun/katei/enable-concurren…
swift-ci Mar 30, 2022
325a0b1
swift SIL: add some Instruction, Value and Type APIs
eeckstein Jan 20, 2022
4824d6d
Swift SIL: improve BasicBlockRange and InstructionRange and add tests
eeckstein Mar 25, 2022
fee26b6
Merge pull request #42092 from slavapestov/rqm-even-more-comments
slavapestov Mar 30, 2022
3930fc4
IRGen: Fix enable-testing of internal with resilient super class
aschwaighofer Mar 23, 2022
3249130
CS: Handle unbound references to @objc optional methods
AnthonyLatsis Mar 17, 2022
77b3f24
Test: Add executable tests for references to @objc optional methods
AnthonyLatsis Mar 30, 2022
88e1905
[SourceKit] Link SwiftCompilerModules to SourceKit
rintaro Mar 29, 2022
bd40059
Merge pull request #42099 from eeckstein/sil-infrastructure
eeckstein Mar 30, 2022
301a406
[stdlib] Buildfix OpenBSD by adding clock types. (#41857)
3405691582 Mar 30, 2022
8d4366b
[cxx-interop] emit correct parameter name in the inline C++ function …
hyp Mar 30, 2022
8bbee9c
Merge pull request #42089 from xedin/se-0347-allow-dependent-member-c…
xedin Mar 30, 2022
128d6e1
Merge pull request #42072 from xedin/type-checker-part-of-multi-opaque
xedin Mar 30, 2022
5296fbd
[NFC][RequirementMachine] Stylistic changes for computing confict
hborla Mar 25, 2022
78b0756
[RequirementMachine] Use PropertyMap::getTypeFromSubstitutionSchema when
hborla Mar 30, 2022
d451203
SILGen: Emit async let entry points at correct abstraction level.
jckarter Mar 30, 2022
f652361
[cxx-interop] Remove 'support' for importing C++ operators.
zoecarver Mar 30, 2022
926e10f
Merge pull request #42100 from hyp/i/cxxkwarguse
hyp Mar 30, 2022
70044d7
Merge pull request #42063 from aschwaighofer/fix_internal_resilient_s…
aschwaighofer Mar 30, 2022
2c89826
Tests: Refine the unsupported configurations for the attr_backDeploy_…
tshortli Mar 31, 2022
da5888f
[IRGen] Bail on opt when seeing non-ABI field.
nate-chandler Mar 31, 2022
4c2e88b
Merge pull request #41849 from AnthonyLatsis/dyn_unbound_ref
AnthonyLatsis Mar 31, 2022
93c6169
Merge pull request #42103 from zoecarver/rip-out-operators
zoecarver Mar 31, 2022
bf303ab
Merge pull request #42105 from tshortli/attr-backdeploy-evolution-uns…
swift-ci Mar 31, 2022
df913c9
Merge pull request #42050 from LucianoPAlmeida/SR-16058-casts
LucianoPAlmeida Mar 31, 2022
7e5c483
[RequirementMachine] When computing requirements for conflict diagnos…
hborla Mar 31, 2022
85be43f
[RequirementMachine] Omit duplicate conflict diagnostics.
hborla Mar 31, 2022
e297015
MemAccessUtils: handle the case of `enum` with no operand in findOwne…
eeckstein Mar 31, 2022
eaeaa02
PassManager: disable verification of analysis with -sil-verify-none
eeckstein Mar 11, 2022
c3adbfb
Merge pull request #42107 from eeckstein/fix-mem-behvior
eeckstein Mar 31, 2022
f06f614
Merge pull request #42108 from eeckstein/verify-none
swift-ci Mar 31, 2022
b4fe306
Merge pull request #42083 from hamishknight/disable-lsp-harder
hamishknight Mar 31, 2022
230c435
Merge pull request #42106 from nate-chandler/rdar79513293
nate-chandler Mar 31, 2022
26ba097
Merge pull request #42094 from kateinoigakukun/katei/wasm-uncond-abs-…
kateinoigakukun Mar 31, 2022
a852b58
LangOptions: Change default for RequirementMachineAbstractSignatures …
slavapestov Mar 31, 2022
b6e3981
[gardening] typo "teh" → "the"
WowbaggersLiquidLunch Mar 31, 2022
ce600d8
Merge pull request #41971 from hborla/conflicting-requirement-diagnos…
hborla Mar 31, 2022
91c4f17
Frontend: flip the default of whether importing SPI_AVAILABLE from clang
nkcsgexi Mar 31, 2022
8f54a15
Merge pull request #42087 from rintaro/sourcekit-lib-swiftcompilermod…
rintaro Mar 31, 2022
15c2192
Merge pull request #42101 from jckarter/async-let-reabstraction
jckarter Mar 31, 2022
a6bcd80
Merge pull request #40694 from calda/cal--if-let-shorthand
DougGregor Mar 31, 2022
b0e9e74
Add SE-0345 to CHANGELOG.md
calda Mar 31, 2022
c3567b4
Add an actual value to the variable
calda Mar 31, 2022
dd7610f
Rename _MatchingEngine module to _RegexParser (#42081)
rxwei Mar 31, 2022
9eb1983
Fix link to proposal
calda Mar 31, 2022
1f7b0c7
Merge pull request #42114 from nkcsgexi/disable-clang-spi-flag
nkcsgexi Mar 31, 2022
8092a28
An `@objc` protocol can inherit from a marker protocol
DougGregor Mar 31, 2022
b6b64c9
Merge pull request #42115 from calda/patch-1
DougGregor Mar 31, 2022
89ab4aa
Fix the "early" computation of a return type to respect `@preconcurre…
DougGregor Mar 31, 2022
b4b8733
Update -requirement-machine-* flags in various tests
slavapestov Mar 31, 2022
81d211f
Merge pull request #42118 from DougGregor/objc-inherit-marker-protocol
DougGregor Mar 31, 2022
928e73e
Fix uninitialized IRGenOptions field
beccadax Mar 31, 2022
3bb3ffd
Don't diagnose non-Sendable captures in actor-isolated @Sendable clos…
DougGregor Mar 31, 2022
53bdf86
Merge pull request #42120 from DougGregor/overloaded-return-type-prec…
DougGregor Mar 31, 2022
a394742
Merge pull request #42069 from beccadax/i-care-about-results
DougGregor Mar 31, 2022
95dfdb6
Merge pull request #42123 from beccadax/fix-42094
swift-ci Mar 31, 2022
f77759b
Merge pull request #42117 from slavapestov/rqm-update-tests-for-diagn…
slavapestov Mar 31, 2022
aff8299
[Test] Added REQUIRES line to two.
nate-chandler Mar 31, 2022
1629d83
Merge pull request #42126 from DougGregor/se-0338-actor-isolated-send…
DougGregor Apr 1, 2022
d7f81b4
Merge pull request #42129 from nate-chandler/test/20220331/mark-execu…
swift-ci Apr 1, 2022
b90d584
Merge pull request #42111 from slavapestov/rqm-abstract-signatures-en…
slavapestov Apr 1, 2022
a6e8b5b
Merge pull request #42112 from apple/SwiftStddef-typo
swift-ci Apr 1, 2022
bc74c9a
Merge remote-tracking branch 'apple/main' into katei/merge-main-2022-…
kateinoigakukun Apr 1, 2022
e1e2ffc
[Wasm] Follow branching strategy update in upstream for string-proces…
kateinoigakukun Apr 1, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,29 @@ _**Note:** This is in reverse chronological order, so newer entries are added to

## Swift 5.7

* [SE-0345][]:

It is now possible to unwrap optional variables with a shorthand syntax that
shadows the existing declaration. For example, the following:

```swift
let foo: String? = "hello world"

if let foo {
print(foo) // prints "hello world"
}
```

is equivalent to:

```swift
let foo: String? = "hello world"

if let foo = foo {
print(foo) // prints "hello world"
}
```

* [SE-0340][]:

It is now possible to make declarations unavailable from use in asynchronous
Expand Down Expand Up @@ -9095,6 +9118,7 @@ Swift 1.0
[SE-0336]: <https://github.com/apple/swift-evolution/blob/main/proposals/0336-distributed-actor-isolation.md>
[SE-0343]: <https://github.com/apple/swift-evolution/blob/main/proposals/0343-top-level-concurrency.md>
[SE-0340]: <https://github.com/apple/swift-evolution/blob/main/proposals/0340-swift-noasync.md>
[SE-0345]: <https://github.com/apple/swift-evolution/blob/main/proposals/0345-if-let-shorthand.md>

[SR-75]: <https://bugs.swift.org/browse/SR-75>
[SR-106]: <https://bugs.swift.org/browse/SR-106>
Expand Down
8 changes: 7 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -327,9 +327,15 @@ option(SWIFT_EMBED_BITCODE_SECTION_HIDE_SYMBOLS
"If non-empty, when embedding the LLVM bitcode binary sections into the relevant binaries, pass in -bitcode_hide_symbols. Does nothing if SWIFT_EMBED_BITCODE_SECTION is set to false."
FALSE)

if("${SWIFT_HOST_VARIANT_SDK}" MATCHES "(OSX|IOS*|TVOS*|WATCHOS*)")
set(SWIFT_RUNTIME_CRASH_REPORTER_CLIENT_default TRUE)
else()
set(SWIFT_RUNTIME_CRASH_REPORTER_CLIENT_default FALSE)
endif()

option(SWIFT_RUNTIME_CRASH_REPORTER_CLIENT
"Whether to enable CrashReporter integration"
FALSE)
"${SWIFT_RUNTIME_CRASH_REPORTER_CLIENT_default}")

set(SWIFT_DARWIN_XCRUN_TOOLCHAIN "XcodeDefault" CACHE STRING
"The name of the toolchain to pass to 'xcrun'")
Expand Down
6 changes: 3 additions & 3 deletions SwiftCompilerSources/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ let package = Package(
.library(
name: "Swift",
type: .static,
targets: ["SIL", "Optimizer", "ExperimentalRegex"]),
targets: ["SIL", "Optimizer", "_RegexParser"]),
],
dependencies: [
],
Expand All @@ -26,15 +26,15 @@ let package = Package(
"-cross-module-optimization"
])]),
.target(
name: "ExperimentalRegex",
name: "_RegexParser",
dependencies: [],
swiftSettings: [SwiftSetting.unsafeFlags([
"-I", "../include/swift",
"-cross-module-optimization"
])]),
.target(
name: "Optimizer",
dependencies: ["SIL", "ExperimentalRegex"],
dependencies: ["SIL", "_RegexParser"],
swiftSettings: [SwiftSetting.unsafeFlags([
"-I", "../include/swift",
"-cross-module-optimization"
Expand Down
2 changes: 1 addition & 1 deletion SwiftCompilerSources/Sources/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
add_subdirectory(Basic)
add_subdirectory(AST)
if(SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING)
add_subdirectory(ExperimentalRegex)
add_subdirectory(_RegexParser)
endif()
add_subdirectory(SIL)
add_subdirectory(Optimizer)
2 changes: 1 addition & 1 deletion SwiftCompilerSources/Sources/Optimizer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
set(dependencies)
list(APPEND dependencies Basic SIL)
if(SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING)
list(APPEND dependencies ExperimentalRegex)
list(APPEND dependencies _RegexParser)
endif()

add_swift_compiler_module(Optimizer DEPENDS ${dependencies})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,47 +51,62 @@ struct BasicBlockRange : CustomStringConvertible, CustomReflectable {
/// The dominating begin block.
let begin: BasicBlock

/// The exclusive range, i.e. not containing the end blocks.
private(set) var range: Stack<BasicBlock>
/// The inclusive range, i.e. the exclusive range plus the end blocks.
private(set) var inclusiveRange: Stack<BasicBlock>

/// The exclusive range, i.e. not containing the end blocks.
var range: LazyFilterSequence<Stack<BasicBlock>> {
inclusiveRange.lazy.filter { contains($0) }
}

/// All inserted blocks.
private(set) var inserted: Stack<BasicBlock>

private var insertedSet: BasicBlockSet
private var wasInserted: BasicBlockSet
private var inExclusiveRange: BasicBlockSet
private var worklist: BasicBlockWorklist

init(begin: BasicBlock, _ context: PassContext) {
self.begin = begin
self.range = Stack(context)
self.inclusiveRange = Stack(context)
self.inserted = Stack(context)
self.insertedSet = BasicBlockSet(context)
self.wasInserted = BasicBlockSet(context)
self.inExclusiveRange = BasicBlockSet(context)
self.worklist = BasicBlockWorklist(context)
worklist.pushIfNotVisited(begin)
}

/// Insert a potential end block.
mutating func insert(_ block: BasicBlock) {
if !insertedSet.contains(block) {
insertedSet.insert(block)
if !wasInserted.contains(block) {
wasInserted.insert(block)
inserted.append(block)
}
if block != begin {
worklist.pushIfNotVisited(contentsOf: block.predecessors)

while let b = worklist.pop() {
range.append(b)
if b != begin {
worklist.pushIfNotVisited(contentsOf: b.predecessors)
worklist.pushIfNotVisited(block)
while let b = worklist.pop() {
inclusiveRange.append(b)
if b != begin {
for pred in b.predecessors {
worklist.pushIfNotVisited(pred)
inExclusiveRange.insert(pred)
}
}
}
}

/// Insert a sequence of potential end blocks.
mutating func insert<S: Sequence>(contentsOf other: S) where S.Element == BasicBlock {
for block in other {
insert(block)
}
}

/// Returns true if the exclusive range contains `block`.
func contains(_ block: BasicBlock) -> Bool { worklist.hasBeenPushed(block) }
func contains(_ block: BasicBlock) -> Bool { inExclusiveRange.contains(block) }

/// Returns true if the inclusive range contains `block`.
func inclusiveRangeContains (_ block: BasicBlock) -> Bool {
contains(block) || insertedSet.contains(block)
worklist.hasBeenPushed(block)
}

/// Returns true if the range is valid and that's iff the begin block dominates all blocks of the range.
Expand All @@ -104,14 +119,14 @@ struct BasicBlockRange : CustomStringConvertible, CustomReflectable {

/// Returns the end blocks.
var ends: LazyFilterSequence<Stack<BasicBlock>> {
inserted.lazy.filter { !worklist.hasBeenPushed($0) }
inserted.lazy.filter { !contains($0) }
}

/// Returns the exit blocks.
var exits: LazySequence<FlattenSequence<
LazyMapSequence<Stack<BasicBlock>,
LazyMapSequence<LazyFilterSequence<Stack<BasicBlock>>,
LazyFilterSequence<SuccessorArray>>>> {
range.lazy.flatMap {
range.flatMap {
$0.successors.lazy.filter {
!inclusiveRangeContains($0) || $0 == begin
}
Expand All @@ -124,22 +139,25 @@ struct BasicBlockRange : CustomStringConvertible, CustomReflectable {
}

var description: String {
"""
begin: \(begin.name)
range: \(range)
ends: \(ends)
exits: \(exits)
interiors: \(interiors)
"""
return (isValid ? "" : "<invalid>\n") +
"""
begin: \(begin.name)
range: \(range)
inclrange: \(inclusiveRange)
ends: \(ends)
exits: \(exits)
interiors: \(interiors)
"""
}

var customMirror: Mirror { Mirror(self, children: []) }

/// TODO: once we have move-only types, make this a real deinit.
mutating func deinitialize() {
worklist.deinitialize()
inExclusiveRange.deinitialize()
wasInserted.deinitialize()
inserted.deinitialize()
insertedSet.deinitialize()
range.deinitialize()
inclusiveRange.deinitialize()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import SIL

/// A range of basic blocks.
/// A range of instructions.
///
/// The `InstructionRange` defines a range from a dominating "begin" instruction to one or more "end" instructions.
/// The range is "exclusive", which means that the "end" instructions are not part of the range.
Expand Down Expand Up @@ -60,6 +60,13 @@ struct InstructionRange : CustomStringConvertible, CustomReflectable {
blockRange.insert(inst.block)
}

/// Insert a sequence of potential end instructions.
mutating func insert<S: Sequence>(contentsOf other: S) where S.Element == Instruction {
for inst in other {
insert(inst)
}
}

/// Returns true if the exclusive range contains `inst`.
func contains(_ inst: Instruction) -> Bool {
let block = inst.block
Expand Down Expand Up @@ -99,7 +106,7 @@ struct InstructionRange : CustomStringConvertible, CustomReflectable {

/// Returns the exit instructions.
var exits: LazyMapSequence<LazySequence<FlattenSequence<
LazyMapSequence<Stack<BasicBlock>,
LazyMapSequence<LazyFilterSequence<Stack<BasicBlock>>,
LazyFilterSequence<SuccessorArray>>>>,
Instruction> {
blockRange.exits.lazy.map { $0.instructions.first! }
Expand All @@ -116,21 +123,20 @@ struct InstructionRange : CustomStringConvertible, CustomReflectable {
let isInterior = include
include = true
return isInterior

}
return false
}
}
}

var description: String {
"""
begin: \(begin)
range: \(blockRange.range)
ends: \(ends.map { $0.description }.joined(separator: "\n "))
exits: \(exits.map { $0.description }.joined(separator: "\n "))
interiors:\(interiors.map { $0.description }.joined(separator: "\n "))
"""
return (isValid ? "" : "<invalid>\n") +
"""
begin: \(begin)
ends: \(ends.map { $0.description }.joined(separator: "\n "))
exits: \(exits.map { $0.description }.joined(separator: "\n "))
interiors:\(interiors.map { $0.description }.joined(separator: "\n "))
"""
}

var customMirror: Mirror { Mirror(self, children: []) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ swift_compiler_sources(Optimizer
AssumeSingleThreaded.swift
SILPrinter.swift
MergeCondFails.swift
RangeDumper.swift
ReleaseDevirtualizer.swift
RunUnitTests.swift
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
//===--- RangeDumper.swift - Dumps escape information ----------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

import SIL

let rangeDumper = FunctionPass(name: "dump-ranges", {
(function: Function, context: PassContext) in

var begin: Instruction?
var ends = Stack<Instruction>(context)
defer { ends.deinitialize() }
var interiors = Stack<Instruction>(context)
defer { interiors.deinitialize() }
var ins = Stack<Instruction>(context)
defer { ins.deinitialize() }
var outs = Stack<Instruction>(context)
defer { outs.deinitialize() }

for block in function.blocks {
for inst in block.instructions {
if let sli = inst as? StringLiteralInst {
switch sli.string {
case "begin":
precondition(begin == nil, "more than one begin instruction")
begin = sli
case "end":
ends.append(sli)
case "interior":
interiors.append(sli)
case "inside":
ins.append(sli)
case "outside":
outs.append(sli)
default:
break
}
}
}
}

guard let begin = begin else { return }

var instRange = InstructionRange(begin: begin, context)
defer { instRange.deinitialize() }

instRange.insert(contentsOf: ends)
instRange.insert(contentsOf: interiors)

print("Instruction range in \(function.name):")
print(instRange)
print("Block range in \(function.name):")
print(instRange.blockRange)
print("End function \(function.name)\n")

verify(instRange.blockRange, context)

for i in ins {
precondition(instRange.contains(i))
precondition(instRange.inclusiveRangeContains(i))
}
for e in ends {
precondition(!instRange.contains(e))
precondition(instRange.inclusiveRangeContains(e))
}
for o in outs {
precondition(!instRange.contains(o))
precondition(!instRange.inclusiveRangeContains(o))
}
})

private func verify(_ blockRange: BasicBlockRange, _ context: PassContext) {
var inRange = BasicBlockSet(context)
defer { inRange.deinitialize() }
for b in blockRange.range {
inRange.insert(b)
}

var inInclusiveRange = BasicBlockSet(context)
defer { inInclusiveRange.deinitialize() }
for b in blockRange.inclusiveRange {
inInclusiveRange.insert(b)
}

for b in blockRange.begin.function.blocks {
precondition(blockRange.contains(b) == inRange.contains(b))
precondition(blockRange.inclusiveRangeContains(b) == inInclusiveRange.contains(b))
}
}

Loading