Commit Graph

40425 Commits

Author SHA1 Message Date
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