Erik Eckstein
240fa6d937
SIL: make swift ParameterInfo convertible back to C++ SILParameterInfo
2024-01-31 17:16:12 +01:00
Erik Eckstein
7a62f15dae
pass Context: verify that only the currently transformed function is modified
2024-01-31 17:16:12 +01:00
Joe Groff
a52e96e358
Merge pull request #71263 from jckarter/borrowing-switch-3
...
Parse `_borrowing x` in patterns as a borrow binding.
2024-01-31 07:08:32 -08:00
Hamish Knight
5be3ef65d3
[AST] Add some ASTNode constructors for lldb
...
These seem to be needed to allow the conversion to
ASTNode in lldb.
2024-01-31 11:16:36 +00:00
Hamish Knight
27c08b130a
Merge pull request #71123 from hamishknight/sema-expr-return
...
Move the single-expr return transform from Parse to Sema
2024-01-31 10:13:24 +00:00
Meghana Gupta
968f69cf66
Add -enable-experimental-lifetime-dependence-inference option
...
Until stdlib can be built with noncopyable generics, stdlib types
can appear as ~Escapable and ~Copyable, leading to invalid inference.
Use a flag to test implicit lifetime dependence
2024-01-31 00:01:32 -08:00
Holly Borla
50945efe6d
[Diagnostics] Add InFlightDiagnostic::limitBehaviorUntilSwiftVersion to
...
downgrade or suppress errors until a specified language version.
2024-01-30 19:50:32 -08:00
Holly Borla
09432a9993
[Concurrency] Sendable diagnostics are errors in Swift 6.
2024-01-30 18:50:00 -08:00
Joe Groff
6706feaf5e
Parse _borrowing x in patterns as a borrow binding.
...
Treat it as a contextual keyword when followed by an identifier, like our
other ownership-related declarations and operators.
2024-01-30 17:33:42 -08:00
nate-chandler
643fa6ca7c
Merge pull request #71157 from nate-chandler/nfc/20240125/1/tweak-visit-product-leaves
...
NFC: [MemAccessUtils] Tweaked API.
2024-01-30 17:00:12 -08:00
Andrew Trick
1e9af2404f
Merge pull request #71209 from atrick/lifetime-diagnostics
...
LifetimeDependenceDiagnostics pass
2024-01-30 14:29:30 -08:00
Steven Wu
0eef51bcf8
Merge pull request #71200 from cachemeifyoucan/eng/PR-swift-caching-tests-improvements
...
Improve swift caching tests
2024-01-30 14:04:26 -08:00
Andrew Trick
ddceffaf3b
LifetimeDependenceDiagnostics pass
...
Initial diagnostic pass to enforce ~Escapable types.
2024-01-30 11:45:55 -08:00
Sophia Poirier
a2a8bca312
Merge pull request #71229 from sophiapoirier/remove-IsolatedAttr
...
remove unused declaration attribute IsolatedAttr
2024-01-30 11:09:30 -08:00
Arnold Schwaighofer
701549fe6e
Merge pull request #71215 from aschwaighofer/large_loadable_reg2mem
...
Large loadable types peepholes and address assignment
2024-01-30 10:41:20 -08:00
Andrew Trick
4ac55b476f
Rename @_unsafeNonEscapableResult to @_unsafeNonescapableResult
2024-01-30 08:38:57 -08:00
Andrew Trick
4f03241759
Bridge Argument.varDecl
2024-01-30 08:38:57 -08:00
Andrew Trick
9950784adb
SwiftCompilerSources API for SourceDestAddrInstructions.
2024-01-30 08:38:57 -08:00
Andrew Trick
1396d6b9d0
Bridge YieldInfo
2024-01-30 08:38:57 -08:00
Andrew Trick
13db95eac3
BridgedASTType::isEscapable
2024-01-30 08:38:57 -08:00
Mike Ash
2f62134d25
Merge pull request #71218 from mikeash/prebuilt-string-map-nul-termination-fix
...
[Runtime] Fix PrebuiltStringMap find with non-terminated keys.
2024-01-30 10:25:58 -05:00
nate-chandler
52989d19d8
Merge pull request #71234 from nate-chandler/partial-consumption/20240129/1/reinit-feature
...
[MoveChecker] Separate partial reinit feature from partial consume feature.
2024-01-30 07:04:56 -08:00
Hamish Knight
ce43f0d2f4
Partially revert "[CodeComplete] Avoid distinguishing between closure types"
...
This regresses completion performance, bring back
the distinction between the multi-statement
and single-expression fallback cases.
b147a17d755d833d8009ad5caa2f8a856692fdc6
2024-01-30 14:08:54 +00:00
Hamish Knight
0a4c029cfc
[AST] Introduce UnreachableExpr
...
This models the conversion from an uninhabited
value to any type, and allows us to get rid of
a couple of places where we'd attempt to drop
the return statement instead.
2024-01-30 14:08:54 +00:00
Hamish Knight
9b64990d24
[AST] Remove the "single expression body" bit
...
Remove this bit from function decls and closures.
Instead, for closures, infer it from the presence
of a single return or single expression AST node
in the body, which ought to be equivalent, and
automatically takes result builders into
consideration. We can also completely drop this
query from AbstractFunctionDecl, replacing it
instead with a bit on ReturnStmt.
2024-01-30 14:08:54 +00:00
Hamish Knight
9cf8f5b1f0
[AST] Remove AbstractFunctionDecl::getSingleExpressionBody
...
This is now unused.
2024-01-30 14:08:54 +00:00
Hamish Knight
d5a3e36309
[AST] Remove AbstractFunctionDecl::setSingleExpressionBody
...
This is now unused.
2024-01-30 14:08:53 +00:00
Hamish Knight
f4a6b95d24
Move single-expr return transform from Parse to Sema
...
Rather than doing the transform in the parser, and
then potentially undoing it in Sema, move the
entire transform into Sema. This also lets us
unify the logic between function decls and
closures, and allows ASTGen to benefit from it.
2024-01-30 14:08:53 +00:00
Hamish Knight
b1070f20a2
[CodeComplete] Avoid distinguishing between closure types
...
This seems to be redundant now that we no longer
attempt to skip multi-statement closure bodies.
2024-01-30 14:08:53 +00:00
Holly Borla
13a1505ce7
Merge pull request #71230 from hborla/swift-6-statistics
2024-01-30 00:25:54 -08:00
Alex Hoppen
cc5e79b521
[Parse] Disallow space between @ and attribute name in Swift 6 mode
2024-01-29 22:54:29 -08:00
Allan Shortlidge
7aa338ef08
Merge pull request #71225 from tshortli/back-deployed-attr-refactor
...
AST/Sema: Adjust `@backDeployed` attribute diagnostics for unavailable decls
2024-01-29 22:35:11 -08:00
Michael Gottesman
ad584a7945
[sil] Add getOperand() variants for pack instructions.
...
We already had getValue() variants... this just expands those to operands. The
reason why this is useful is that these instructions have specific operands with
specific meanings as assigned by an internal enum struct. Rather than having to
access those directly by using getAllOperand()[EnumCase]... better to have a
named method.
2024-01-29 21:34:41 -08:00
Sophia Poirier
a72cf7302d
remove unused declaration attribute IsolatedAttr
2024-01-29 21:05:49 -08:00
Holly Borla
32038d9261
[Statistics] Add a frontend counter for Swift 6 errors diagnosed via
...
`warnUntilSwiftVersion(6)`.
2024-01-29 19:58:48 -08:00
Andrew Trick
f5e5789984
Merge pull request #71206 from meg-gupta/lifetimedepsil
...
Lower lifetime dependence info into SIL and infer when absent
2024-01-29 19:56:25 -08:00
Nate Chandler
03f904af0c
[MoveChecker] Separate partial reinit from consume
2024-01-29 18:29:40 -08:00
nate-chandler
f2d68a21dc
Merge pull request #71162 from nate-chandler/partial-consumption/20240125/1/scope-end-diagnostic
...
[MoveChecker] Distinguished scope end diagnostics.
2024-01-29 18:27:10 -08:00
Arnold Schwaighofer
5e2144bdb8
Large loadable types peepholes and address assignment
...
Contract some load store patterns and assign addresses to (non-address)
SIL SSA values.
rdar://115571407
2024-01-29 17:10:46 -08:00
Allan Shortlidge
35afd7fa90
AST: App extension platforms always inherit availability from their parents.
2024-01-29 16:57:29 -08:00
Meghana Gupta
4dcda843e2
Infer lifetime dependence info for functions that return ~Escapable type
2024-01-29 15:45:19 -08:00
Meghana Gupta
d598d0440d
[NFC] Reorganize lifetime dependence utilities
2024-01-29 15:24:09 -08:00
Meghana Gupta
50821f60aa
Use LifetimeDependenceInfo while computing FunctionType's id
2024-01-29 14:55:52 -08:00
Meghana Gupta
ab71c1ea8a
Implement LifetimeDependentReturnTypeRepr::printImpl
2024-01-29 14:55:52 -08:00
Meghana Gupta
d60b43caab
Store parameter indices of mutate lifetime dependence specifiers separately from borrow
2024-01-29 14:55:52 -08:00
Meghana Gupta
f716c097ac
Diagnose if lifetime dependence specifier is present on Escapable type
2024-01-29 14:55:47 -08:00
Konrad `ktoso` Malawski
bd19d937f0
[TaskExecutor] Remove underscore from new APIs ( #71145 )
2024-01-30 06:27:54 +09:00
Doug Gregor
0cc529768a
Merge pull request #70635 from DougGregor/async-sequence-typed-throws
...
Adopt typed throws in AsyncIteratorProtocol and AsyncSequence
2024-01-29 11:51:25 -08:00
Nate Chandler
5441ff1d97
[MoveChecker] Distinguished scope end diagnostics.
...
There are several kinds of scopes at which it is required that an
address be initialized:
(1) the whole function -- for inout argument to the function
(2) the region a coroutine is active -- for an inout yielded by a
coroutine into the function
(3) the region of a memory access -- for a `begin_access [modify]`.
The move checker enforces that they are initialized at that point by
adding instructions at which the field must be live to liveness.
Previously, all such scopes used the end of the function as the point at
which the memory had to have been reinitialized. Here, the relevant end
of scope markers are used instead.
More importantly, here the diagnostic is made to vary--the diagnostic,
that is, that is issued in the face an address not being initialized at
the end of these different kind of scopes.
2024-01-29 11:49:30 -08:00
Nate Chandler
b757b2e99d
[FSPrunedLiveness] Return bitfield from isDefBlock
2024-01-29 11:49:30 -08:00