Files
Konrad `ktoso` Malawski 6d565ad1a5 [Distributed/SIL] Fix sil isolation of computed properties (#90287)
A `distributed` member's thunk is a synthesized FuncDecl annotated
`@nonisolated @concurrent`, so its `self` must not be actor-isolated.

SILGen builds the SIL type from `SILDeclRef(thunkDecl).asDistributed()`
(nonisolated). Client module's call sites in `SILGenApply` instead flip
the distributedThunk bit on the *original* accessor's SILDeclRef,
leaving `getDecl()` as the actor-isolated originator.

`makeConstantInterfaceType` then used the type of the original decl
which would be actor isolated, causing the `@sil_isolated @guaranteed
self` type to be produced, clashing with the correct nonisolated real
state of the func.

Note that this is fixed the same way for autodiff in this func already a
few lines above:

```
if (auto *derivativeId = c.getDerivativeFunctionIdentifier()) { ... }
```

so I think this is fine to solve like this; also, we do want those decl
refs to point at the real func AFAIR so I think this is the right fix.

resolves rdar://180980491
2026-07-02 13:07:23 +09:00
..