Commit Graph

39850 Commits

Author SHA1 Message Date
Becca Royal-Gordon
db19c19e19 Let module lookups ignore access control
…at least for declarations in the current module. We continue to pretend that inaccessible declarations in other modules do not exist.
2023-12-13 11:09:49 -08:00
Becca Royal-Gordon
8651af4325 Make @objcImpl work with @_cdecl
No real diagnostics yet, but we’re emitting mostly correct code.
2023-12-13 11:09:49 -08:00
Zhiyu Zhu/朱智语
10d672e33c Merge pull request #70249 from apple/ApolloZhu/const-extract/attribute-on-all-nominals
[Compile Time Constant Extraction] Allow attribute on all nominal decls
2023-12-06 15:11:28 -08:00
Erik Eckstein
bfeb2128cb remove default value for the keepUnique argument of Builder.createEndCOWMutation
This avoids bugs because the default value false is sometimes not the right choice.
NFC
2023-12-06 15:40:08 +01:00
Meghana Gupta
6442e914a0 Merge pull request #70244 from meg-gupta/removeselfaccesskind
Remove SelfAccessKind::ResultDependsOnSelf
2023-12-05 18:30:32 -08:00
Rintaro Ishizaki
7b4e58a9e0 Merge pull request #70220 from rintaro/astgen-getidentifier
[ASTGen] Move logic in `BridgedASTContext.getIdentifier()` to ASTGen
2023-12-05 17:47:29 -08:00
Alex Hoppen
db8ca19a24 Merge pull request #70014 from ahoppen/ahoppen/some-any-completion
[CodeCompletion] Add keyword completion for 'some', 'any', 'repeat', and 'each'
2023-12-05 16:24:05 -08:00
Pavel Yaskevich
0ec84e7bce Merge pull request #70214 from xedin/rdar-119040159
[CSBindings] Extend early array literal favoring to cover dictionaries
2023-12-05 14:38:55 -08:00
Rintaro Ishizaki
7ab4003a96 [ASTGen] Move getIdentifier() etc to ASTGenVisitor
Now that `getIdentifier()` has some logic in it. It's not a simple
bridging.
2023-12-05 14:32:09 -08:00
Rintaro Ishizaki
77c733c1c4 Merge pull request #70216 from rintaro/astgen-allocatetransform
[ASTBridging] Avoid temporary SmallVector for 'InheritedEntry' list
2023-12-05 14:22:30 -08:00
Rintaro Ishizaki
06ba93f005 [ASTBridging] Avoid temporary SmallVector for 'InheritedEntry' list
We know the number of the entries. Allocate the storage in ASTContext
directly, then initialize it transforming the bridged values.
Add ASTContext::AllocateTransform() helper function.
2023-12-05 11:06:48 -08:00
Michael Gottesman
1cb92c0e19 Merge pull request #70205 from gottesmm/pr-1579f774730649603b4c91fe692e1f4e7987198d
[region-isolation] Change PartitionOpEvaluator to use CRTP
2023-12-05 11:23:31 -06:00
Alex Hoppen
c48e578a88 Merge pull request #70174 from ahoppen/ahoppen/dont-build-swift-refactor-without-swiftsyntax
[SourceKit] Support building sourcekitd without building swift-syntax
2023-12-05 08:49:20 -08:00
Alex Hoppen
a710111001 [SourceKit] Support building sourcekitd without building swift-syntax
This allows building sourcekitd and swift-refactor with `SWIFT_BUILD_SWIFT_SYNTAX=NO`. In these builds, the `relatedidents` and `find-syntactic-rename-ranges` requests will always return an error.
2023-12-04 19:14:01 -08:00
Alex Hoppen
aa60c427ec Merge pull request #70065 from ahoppen/ahoppen/error-unnamed-parameter
[Parse] Error if closure has an unnamed parameter
2023-12-04 18:52:15 -08:00
Alex Hoppen
9cb2a248c6 [CodeCompletion] Add keyword completion for 'some', 'any', 'repeat', and 'each'
The implementation is not 100% perfect but I don’t think it’s worth putting too much effort into it passing more information down in the parser if 'repeat' and 'each' are valid if we are going to remove the current parser anyway.

rdar://95725895
2023-12-04 15:20:05 -08:00
Pavel Yaskevich
911ba101e7 [CSBindings] Extend early array literal favoring to cover dictionaries
Follow-up to https://github.com/apple/swift/pull/70148

Just like with arrays it's advantageous to favor dictionary
literals over disjunctions to bind the elements together and
enable inference across elements and, as a consequence,
type pruning.

Resolves: rdar://119040159
2023-12-04 15:01:27 -08:00
Rintaro Ishizaki
a7a0b329f2 Merge pull request #70168 from rintaro/astgen-sequenceexpr
[ASTGen] Implement SequenceExpr generation
2023-12-04 11:31:36 -08:00
Michael Gottesman
398fa8b10f [region-isolation] Make PartitionOpEvaluator use CRTP instead of std::function callbacks.
Just a fixup requested by reviewers of incoming code that I wanted to do in a
follow on commit.
2023-12-04 13:03:15 -06:00
Michael Gottesman
df03cb40ef [region-isolation] Make PartitionOpEvaluator no longer a friend of Partition.
I left them as friends since that was in the original code. There isn't a reason
to do this and break the encapsulation of Partition. I just added reasonable
helpers that give PartitionOpEvaluator all of the functionality it needs.
2023-12-04 13:03:15 -06:00
Hamish Knight
e6ec9b0c8b Merge pull request #70172 from hamishknight/or-else 2023-12-04 17:33:57 +00:00
Puyan Lotfi
84e1007304 Merge pull request #69954 from plotfi/plotfi-swift-virtual-functions
[cxx-interop] Enable virtual function calling from Swift to C++
2023-12-04 10:37:20 -05:00
Rintaro Ishizaki
0c111ace0a [ASTGen] Implement SequenceExpr generation 2023-12-04 06:50:31 -08:00
Hamish Knight
f4e09c5531 [AST] Tighten up invariants around IfStmt
The 'then' statement must be a BraceStmt, and
the 'else' must either be a BraceStmt or an IfStmt.
2023-12-04 11:09:01 +00:00
eeckstein
10ff55b2b3 Merge pull request #70155 from eeckstein/refactoring
MemoryLifetimeVerifier: use CalleeCache instead of AliasAnalysis
2023-12-04 08:53:59 +01:00
Puyan Lotfi
ebe83a4ac2 [cxx-interop] WA: skip virtual function import when symbolic import enabled
This is a simple work around to avoid importing virtual functions when symbolic
imports are turned on. Test cases that were failing before this WA are in
test/Interop/Cxx/symbolic-imports.

Thanks to Alex Lorenz for providing this WA to me (@hyp).
2023-12-04 01:57:13 -05:00
Michael Gottesman
4c754ae4a2 Merge pull request #70171 from gottesmm/pr-b349a91e3e11b734533ef6be6960d755ed783b71
[region-isolation] Ensure that if a var is captured by reference in a closure that we do not allow for later accesses to sendableFields
2023-12-02 19:47:03 -08:00
Doug Gregor
cfe2b3c87d [Typed throws] Implement support for do throws(...) syntax
During the review of SE-0413, typed throws, the notion of a `do throws`
syntax for `do..catch` blocks came up. Implement that syntax and
semantics, as a way to explicitly specify the type of error that is
thrown from the `do` body in `do..catch` statement.
2023-12-02 07:37:47 -08:00
Doug Gregor
89cdc6d8ea Merge pull request #70160 from DougGregor/ast-verifier-thrown-error-contexts
Teach AST verifier about thrown error contexts
2023-12-01 16:38:52 -08:00
Michael Gottesman
59cc595f7a Fix unittest 2023-12-01 15:06:51 -08:00
Sophia Poirier
8a84f0e15f Merge pull request #70137 from sophiapoirier/VarDecl-isKnownToBeLocal-comment-misspelling
[AST] typo in VarDecl::isKnownToBeLocal comment
2023-12-01 14:10:37 -08:00
Michael Gottesman
12573d6b52 [region-isolation] Instead of just tracking a single transferring instruction, track all of them.
Previously I avoided doing this since the only problem would be that in a case
where we had two transfer instructions that were in an if-else block, we would
just emit an error for one:

```swift
if boolValue {
  transfer(x)
} else {
  transfer(x) // Only emit error for this transfer!
}

useValue(x)
```

Now that we are tracking at the transfer point if any element in the transfer
was captured in a closure, this becomes an actual semantic issue since if we
track the transfer instruction that isn't reachable from the closure capture, we
will not become more pessimistic:

```swift
if boolValue {
  closure = { useInOut(&x) }
  transfer(x)
} else {
  transfer(x)
}

// Since we grab from the else block, sendableField is allowed to be accessed
// since we do not track that x was captured by reference in a closure.
x.sendableField
useValue(x)
```

To be truly safe, we need to emit both errors.

rdar://119048779
2023-12-01 13:53:57 -08:00
Michael Gottesman
150efb6ef4 [immutable-ptr-set] Change data structure to use T instead of T *, but require T to conform to PointerLikeTypeTraits.
This allows one to place types like PointerIntPair and value types that wrap a
pointer into the pointer set.

I am making this change before I use this data structure in TransferNonSendable
and using ARC to validate that I haven't broken anything.
2023-12-01 13:53:57 -08:00
Michael Gottesman
a2604dcafa [region-isolation] Ensure that we error if we access a Sendable field of a non-Sendable typed var and the var is captured in a closure
If the var is captured in a closure before it is transferred, it is not safe to
access the Sendable field since we may race on accessing the field with an
assignment to the field in another concurrency domain.

rdar://115124361
2023-12-01 13:53:56 -08:00
Robert Widmann
db28fc8adb Merge pull request #70100 from CodaFi/cereal-milk
Don't Serialize Declarations with `package` Access
2023-12-01 13:48:21 -07:00
Zoe Carver
a6967e3351 Merge pull request #70152 from zoecarver/three-new-perf-annotations
[opt] Add three new perf annotations: `@_noRuntime`, `@_noExistentials`, and `@_noObjCBridging`.
2023-12-01 12:38:36 -07:00
Rintaro Ishizaki
c46eb58ed8 Merge pull request #70138 from rintaro/astgen-compoundname
[ASTGen] Generate compound name expression
2023-12-01 11:31:38 -08:00
Erik Eckstein
0897d8a720 MemoryLifetimeVerifier: use CalleeCache instead of AliasAnalysis
To verify if a function may read from an indirect argument, don't use AliasAnalysis.
Instead use the CalleeCache to get the list of callees of an apply instruction.
Then use a simple call-back into the swift Function to check if a callee has any relevant memory effect set.

This avoids a dependency from SIL to the Optimizer.
It fixes a linker error when building some unit tests in debug.
2023-12-01 19:20:18 +01:00
Erik Eckstein
e80fedc52a move CalleeCache from SILOptimizer to SIL
Extract the CalleeCache from BasicCalleeAnalysis so that it can be used in SIL without BasicCalleeAnalysis
2023-12-01 19:20:18 +01:00
Chelsea Cassanova
04316bee93 Merge pull request #69730 from chelcassanova/lldb-swift-progress-reports
[ASTContext] Add setter for PreModuleImportCallback
2023-12-01 13:08:16 -05:00
Pavel Yaskevich
86adc6fe20 Merge pull request #70148 from xedin/fix-perf-regression-with-keypath-inference
[TypeChecker] Improve performance of key path expression inference
2023-12-01 09:04:39 -08:00
zoecarver
69498e2f2e [opt] Add three new perf annotations: @_noRuntime, @_noExistential, and @_noObjCBridging. 2023-12-01 09:13:24 -07:00
nate-chandler
54a152f284 Merge pull request #69938 from nate-chandler/rdar96919870/1/bitwise-copyable-protocol
[BitwiseCopyable] Add a marker protocol.
2023-12-01 06:57:11 -08:00
Holly Borla
2aa8d56997 Merge pull request #70123 from hborla/swift-6-upcoming-features
[Features] Update upcoming feature flags for Swift 6.
2023-11-30 19:00:20 -08:00
Doug Gregor
2bb035e1d3 Merge pull request #70126 from DougGregor/source-loc-ordering-with-macros
Implement ordering of source locations that accounts for macro expansion
2023-11-30 18:39:18 -08:00
Apollo Zhu
a8fd83703b Allow extractConstantsFromMembers on all nominal decls 2023-11-30 18:35:17 -08:00
Pavel Yaskevich
dde501485e [CSBinding] Prefer array literal type over a disjunction in certain cases
If array literal type is not delayed and doesn't have any type variables
associated with it, let's prefer it over a disjunction to facilitate
type propagation through its `Element` type to element expressions.

Resolves: rdar://118993030
2023-11-30 17:43:13 -08:00
Doug Gregor
e2aed58532 Add a warning about ordering to MacroRoles.def 2023-11-30 15:44:05 -08:00
Nate Chandler
b266abe5c0 [BitwiseCopyable] Add a marker protocol.
Behind the experimental feature BitwiseCopyable.
2023-11-30 15:25:46 -08:00
Rintaro Ishizaki
4796ea458a [ASTGen] Generate compound name expression
Bridge DeclBaseName, DeclNameRef, and DeclNameLoc.
Implement UnresolvedMemberExpr generation.
2023-11-30 14:42:02 -08:00