From 6e002719ce28711b863170d38a0cac9b3e80ecbb Mon Sep 17 00:00:00 2001 From: Pavel Yaskevich Date: Wed, 16 Jul 2025 09:50:15 -0700 Subject: [PATCH] [TypeChecker] NFC: Rename `CallerIsolationInheriting` to `NonisolatedCaller` Aligns `ActorIsolation` and `FunctionTypeIsolation` spellings. --- include/swift/AST/ActorIsolation.h | 14 +-- include/swift/SIL/ApplySite.h | 4 +- lib/AST/ASTDumper.cpp | 2 +- lib/AST/ActorIsolation.cpp | 2 +- lib/AST/Decl.cpp | 4 +- lib/AST/FeatureSet.cpp | 2 +- lib/AST/TypeCheckRequests.cpp | 12 +-- lib/IDE/CompletionLookup.cpp | 2 +- lib/SIL/IR/SILFunctionType.cpp | 8 +- lib/SILGen/SILGenApply.cpp | 4 +- lib/SILGen/SILGenBridging.cpp | 2 +- lib/SILGen/SILGenConcurrency.cpp | 12 +-- lib/SILGen/SILGenConstructor.cpp | 4 +- lib/SILGen/SILGenExpr.cpp | 8 +- lib/SILGen/SILGenPoly.cpp | 8 +- .../Mandatory/DefiniteInitialization.cpp | 2 +- .../Mandatory/OptimizeHopToExecutor.cpp | 4 +- lib/SILOptimizer/Utils/SILIsolationInfo.cpp | 6 +- lib/Sema/CSApply.cpp | 4 +- lib/Sema/ConstraintSystem.cpp | 2 +- lib/Sema/TypeCheckConcurrency.cpp | 89 +++++++++---------- lib/Sema/TypeCheckDeclObjC.cpp | 2 +- lib/Sema/TypeCheckPropertyWrapper.cpp | 2 +- lib/Serialization/Deserialization.cpp | 6 +- lib/Serialization/ModuleFormat.h | 2 +- lib/Serialization/Serialization.cpp | 4 +- 26 files changed, 105 insertions(+), 106 deletions(-) diff --git a/include/swift/AST/ActorIsolation.h b/include/swift/AST/ActorIsolation.h index af036c944d50a..6fadfbce2eac5 100644 --- a/include/swift/AST/ActorIsolation.h +++ b/include/swift/AST/ActorIsolation.h @@ -73,7 +73,7 @@ class ActorIsolation { /// /// DISCUSSION: This is used for nonisolated asynchronous functions that we /// want to inherit from their context the context's actor isolation. - CallerIsolationInheriting, + NonisolatedCaller, }; private: @@ -166,10 +166,10 @@ class ActorIsolation { return ActorIsolation(unsafe ? NonisolatedUnsafe : Nonisolated); } - static ActorIsolation forCallerIsolationInheriting() { + static ActorIsolation forNonisolatedCaller() { // NOTE: We do not use parameter indices since the parameter is implicit // from the perspective of the AST. - return ActorIsolation(CallerIsolationInheriting); + return ActorIsolation(NonisolatedCaller); } static ActorIsolation forActorInstanceSelf(ValueDecl *decl); @@ -217,7 +217,7 @@ class ActorIsolation { .Case("global_actor", ActorIsolation::GlobalActor) .Case("global_actor_unsafe", ActorIsolation::GlobalActor) .Case("caller_isolation_inheriting", - ActorIsolation::CallerIsolationInheriting) + ActorIsolation::NonisolatedCaller) .Default(std::nullopt); if (kind == std::nullopt) return std::nullopt; @@ -267,7 +267,7 @@ class ActorIsolation { case Unspecified: case Nonisolated: case NonisolatedUnsafe: - case CallerIsolationInheriting: + case NonisolatedCaller: return false; } } @@ -292,8 +292,8 @@ class ActorIsolation { bool isDistributedActor() const; - bool isCallerIsolationInheriting() const { - return getKind() == CallerIsolationInheriting; + bool isNonisolatedCaller() const { + return getKind() == NonisolatedCaller; } Type getGlobalActor() const { diff --git a/include/swift/SIL/ApplySite.h b/include/swift/SIL/ApplySite.h index 94e989eb0341f..758372696fe0f 100644 --- a/include/swift/SIL/ApplySite.h +++ b/include/swift/SIL/ApplySite.h @@ -904,9 +904,9 @@ class FullApplySite : public ApplySite { return calleeFunction->getActorIsolation(); } - bool isCallerIsolationInheriting() const { + bool isNonisolatedCaller() const { auto isolation = getActorIsolation(); - return isolation && isolation->isCallerIsolationInheriting(); + return isolation && isolation->isNonisolatedCaller(); } static FullApplySite getFromOpaqueValue(void *p) { return FullApplySite(p); } diff --git a/lib/AST/ASTDumper.cpp b/lib/AST/ASTDumper.cpp index c2a1c28b6f0a8..0ecbe37367f46 100644 --- a/lib/AST/ASTDumper.cpp +++ b/lib/AST/ASTDumper.cpp @@ -1293,7 +1293,7 @@ namespace { printFlag(true, "dynamically_isolated", CapturesColor); break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: printFlag(true, "isolated_to_caller_isolation", CapturesColor); break; diff --git a/lib/AST/ActorIsolation.cpp b/lib/AST/ActorIsolation.cpp index b547a9b7bc213..c0b074ee8112e 100644 --- a/lib/AST/ActorIsolation.cpp +++ b/lib/AST/ActorIsolation.cpp @@ -182,7 +182,7 @@ bool ActorIsolation::isEqual(const ActorIsolation &lhs, // to answer. return false; - case CallerIsolationInheriting: + case NonisolatedCaller: // This returns false for the same reason as erased. The caller has to check // against the actual caller isolation. return false; diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 16fddbd916901..af7f758bbf3ac 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -2975,7 +2975,7 @@ static bool deferMatchesEnclosingAccess(const FuncDecl *defer) { return true; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::ActorInstance: case ActorIsolation::Nonisolated: case ActorIsolation::Erased: // really can't happen @@ -12007,7 +12007,7 @@ bool VarDecl::isSelfParamCaptureIsolated() const { case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::GlobalActor: case ActorIsolation::Erased: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: return false; case ActorIsolation::ActorInstance: diff --git a/lib/AST/FeatureSet.cpp b/lib/AST/FeatureSet.cpp index e3498c62d8e42..be847950c18cb 100644 --- a/lib/AST/FeatureSet.cpp +++ b/lib/AST/FeatureSet.cpp @@ -649,7 +649,7 @@ static bool usesFeatureAsyncExecutionBehaviorAttributes(Decl *decl) { // The declaration is going to be printed with `nonisolated(nonsending)` // attribute. - if (getActorIsolation(VD).isCallerIsolationInheriting()) + if (getActorIsolation(VD).isNonisolatedCaller()) return true; // Check if any parameters that have `nonisolated(nonsending)` attribute. diff --git a/lib/AST/TypeCheckRequests.cpp b/lib/AST/TypeCheckRequests.cpp index 8a8e1155975aa..420b9ea34c6b8 100644 --- a/lib/AST/TypeCheckRequests.cpp +++ b/lib/AST/TypeCheckRequests.cpp @@ -1917,7 +1917,7 @@ SourceLoc MacroDefinitionRequest::getNearestLoc() const { bool ActorIsolation::requiresSubstitution() const { switch (kind) { - case CallerIsolationInheriting: + case NonisolatedCaller: case ActorInstance: case Nonisolated: case NonisolatedUnsafe: @@ -1933,7 +1933,7 @@ bool ActorIsolation::requiresSubstitution() const { ActorIsolation ActorIsolation::subst(SubstitutionMap subs) const { switch (kind) { case ActorInstance: - case CallerIsolationInheriting: + case NonisolatedCaller: case Nonisolated: case NonisolatedUnsafe: case Unspecified: @@ -1954,7 +1954,7 @@ void ActorIsolation::printForDiagnostics(llvm::raw_ostream &os, os << "actor" << (asNoun ? " isolation" : "-isolated"); break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: os << "caller isolation inheriting" << (asNoun ? " isolation" : "-isolated"); break; @@ -1995,7 +1995,7 @@ void ActorIsolation::print(llvm::raw_ostream &os) const { os << ". name: '" << vd->getBaseIdentifier() << "'"; } return; - case CallerIsolationInheriting: + case NonisolatedCaller: os << "caller_isolation_inheriting"; return; case Nonisolated: @@ -2022,7 +2022,7 @@ void ActorIsolation::printForSIL(llvm::raw_ostream &os) const { case ActorInstance: os << "actor_instance"; return; - case CallerIsolationInheriting: + case NonisolatedCaller: os << "caller_isolation_inheriting"; return; case Nonisolated: @@ -2081,7 +2081,7 @@ void swift::simple_display( } break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: out << "isolated to isolation of caller"; break; diff --git a/lib/IDE/CompletionLookup.cpp b/lib/IDE/CompletionLookup.cpp index ed8d108fa72db..ac3b32ac6e09e 100644 --- a/lib/IDE/CompletionLookup.cpp +++ b/lib/IDE/CompletionLookup.cpp @@ -875,7 +875,7 @@ void CompletionLookup::analyzeActorIsolation( break; case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: return; } diff --git a/lib/SIL/IR/SILFunctionType.cpp b/lib/SIL/IR/SILFunctionType.cpp index 1e916de1b565c..8107e9e8b3abb 100644 --- a/lib/SIL/IR/SILFunctionType.cpp +++ b/lib/SIL/IR/SILFunctionType.cpp @@ -1702,7 +1702,7 @@ class DestructureInputs { // NOTE: The parameter is not inserted for async functions imported // from ObjC because they are handled in a special way that doesn't // require it. - if (IsolationInfo && IsolationInfo->isCallerIsolationInheriting() && + if (IsolationInfo && IsolationInfo->isNonisolatedCaller() && extInfoBuilder.isAsync() && !Foreign.async) { auto actorProtocol = TC.Context.getProtocol(KnownProtocolKind::Actor); auto actorType = @@ -2397,7 +2397,7 @@ swift::getSILFunctionTypeActorIsolation(CanAnyFunctionType substFnInterfaceType, if (auto *nonisolatedAttr = decl->getAttrs().getAttribute()) { if (nonisolatedAttr->isNonSending()) - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } if (decl->getAttrs().hasAttribute()) { @@ -2421,7 +2421,7 @@ swift::getSILFunctionTypeActorIsolation(CanAnyFunctionType substFnInterfaceType, if (auto *nonisolatedAttr = decl->getAttrs().getAttribute()) { if (nonisolatedAttr->isNonSending()) - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } if (decl->getAttrs().hasAttribute()) { @@ -2441,7 +2441,7 @@ swift::getSILFunctionTypeActorIsolation(CanAnyFunctionType substFnInterfaceType, substFnInterfaceType->getExtInfo().getIsolation().isNonIsolatedCaller()) { // If our function type is a nonisolated caller and we can not infer from // our constant, we must be caller isolation inheriting. - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } return {}; diff --git a/lib/SILGen/SILGenApply.cpp b/lib/SILGen/SILGenApply.cpp index dd4cda6358e83..b2139e6fe95e8 100644 --- a/lib/SILGen/SILGenApply.cpp +++ b/lib/SILGen/SILGenApply.cpp @@ -3165,7 +3165,7 @@ static void emitDelayedArguments(SILGenFunction &SGF, case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: llvm_unreachable("Not isolated"); } @@ -6151,7 +6151,7 @@ RValue SILGenFunction::emitApply( case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: llvm_unreachable("Not isolated"); break; diff --git a/lib/SILGen/SILGenBridging.cpp b/lib/SILGen/SILGenBridging.cpp index d7cb7c1324009..715069817ad34 100644 --- a/lib/SILGen/SILGenBridging.cpp +++ b/lib/SILGen/SILGenBridging.cpp @@ -1671,7 +1671,7 @@ void SILGenFunction::emitNativeToForeignThunk(SILDeclRef thunk) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: args.push_back(emitNonIsolatedIsolation(loc).getValue()); break; case ActorIsolation::ActorInstance: diff --git a/lib/SILGen/SILGenConcurrency.cpp b/lib/SILGen/SILGenConcurrency.cpp index db767aef53de7..aed6ccc0857b4 100644 --- a/lib/SILGen/SILGenConcurrency.cpp +++ b/lib/SILGen/SILGenConcurrency.cpp @@ -73,7 +73,7 @@ setExpectedExecutorForParameterIsolation(SILGenFunction &SGF, // If we have caller isolation inheriting... just grab from our isolated // argument. - if (actorIsolation.getKind() == ActorIsolation::CallerIsolationInheriting) { + if (actorIsolation.getKind() == ActorIsolation::NonisolatedCaller) { auto *isolatedArg = SGF.F.maybeGetIsolatedArgument(); ASSERT(isolatedArg && "Caller Isolation Inheriting without isolated parameter"); @@ -110,7 +110,7 @@ void SILGenFunction::emitExpectedExecutorProlog() { case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: return false; case ActorIsolation::Erased: @@ -189,7 +189,7 @@ void SILGenFunction::emitExpectedExecutorProlog() { break; } - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: assert(F.isAsync()); setExpectedExecutorForParameterIsolation(*this, actorIsolation); break; @@ -211,7 +211,7 @@ void SILGenFunction::emitExpectedExecutorProlog() { case ActorIsolation::NonisolatedUnsafe: break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: assert(F.isAsync()); setExpectedExecutorForParameterIsolation(*this, actorIsolation); break; @@ -643,7 +643,7 @@ SILGenFunction::emitClosureIsolation(SILLocation loc, SILDeclRef constant, switch (isolation) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: return emitNonIsolatedIsolation(loc); @@ -695,7 +695,7 @@ SILGenFunction::emitExecutor(SILLocation loc, ActorIsolation isolation, switch (isolation.getKind()) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: return std::nullopt; diff --git a/lib/SILGen/SILGenConstructor.cpp b/lib/SILGen/SILGenConstructor.cpp index 169b6b961a8e7..0f2900b01df2e 100644 --- a/lib/SILGen/SILGenConstructor.cpp +++ b/lib/SILGen/SILGenConstructor.cpp @@ -604,7 +604,7 @@ static bool ctorHopsInjectedByDefiniteInit(ConstructorDecl *ctor, case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::GlobalActor: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: return false; } } @@ -1558,7 +1558,7 @@ void SILGenFunction::emitMemberInitializer(DeclContext *dc, VarDecl *selfDecl, case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: break; case ActorIsolation::Erased: diff --git a/lib/SILGen/SILGenExpr.cpp b/lib/SILGen/SILGenExpr.cpp index 6be9d7e45f874..4722a95895069 100644 --- a/lib/SILGen/SILGenExpr.cpp +++ b/lib/SILGen/SILGenExpr.cpp @@ -2016,7 +2016,7 @@ RValueEmitter::emitFunctionCvtToExecutionCaller(FunctionConversionExpr *e, return RValue(); auto *decl = dyn_cast(declRef->getDecl()); - if (!decl || !getActorIsolation(decl).isCallerIsolationInheriting()) + if (!decl || !getActorIsolation(decl).isNonisolatedCaller()) return RValue(); // Ok, we found our target. @@ -2049,7 +2049,7 @@ RValue RValueEmitter::emitFunctionCvtForNonisolatedNonsendingClosureExpr( // inheriting, bail. auto *closureExpr = dyn_cast(subExpr); if (!closureExpr || - !closureExpr->getActorIsolation().isCallerIsolationInheriting()) + !closureExpr->getActorIsolation().isNonisolatedCaller()) return RValue(); // Then grab our closure type... make sure it is non isolated and then make @@ -2116,7 +2116,7 @@ RValue RValueEmitter::emitFunctionCvtFromExecutionCallerToGlobalActor( if (!declRef) return RValue(); auto *decl = dyn_cast(declRef->getDecl()); - if (!decl || !getActorIsolation(decl).isCallerIsolationInheriting()) + if (!decl || !getActorIsolation(decl).isNonisolatedCaller()) return RValue(); // Make sure that subCvt/declRefType only differ by isolation and sendability. @@ -7375,7 +7375,7 @@ RValue RValueEmitter::visitCurrentContextIsolationExpr( return RValue(SGF, E, isolationValue); } - if (isolation == ActorIsolation::CallerIsolationInheriting) { + if (isolation == ActorIsolation::NonisolatedCaller) { auto *isolatedArg = SGF.F.maybeGetIsolatedArgument(); assert(isolatedArg && "Caller Isolation Inheriting without isolated parameter"); diff --git a/lib/SILGen/SILGenPoly.cpp b/lib/SILGen/SILGenPoly.cpp index a8460ff1c1c5b..5d9b917a560d4 100644 --- a/lib/SILGen/SILGenPoly.cpp +++ b/lib/SILGen/SILGenPoly.cpp @@ -7095,7 +7095,7 @@ SILGenFunction::emitVTableThunk(SILDeclRef base, break; } case ActorIsolation::ActorInstance: - case ActorIsolation::CallerIsolationInheriting: { + case ActorIsolation::NonisolatedCaller: { auto derivedIsolation = swift::getActorIsolation(derived.getAbstractFunctionDecl()); switch (derivedIsolation) { @@ -7114,7 +7114,7 @@ SILGenFunction::emitVTableThunk(SILDeclRef base, break; } case ActorIsolation::ActorInstance: - case ActorIsolation::CallerIsolationInheriting: { + case ActorIsolation::NonisolatedCaller: { auto isolatedArg = F.maybeGetIsolatedArgument(); assert(isolatedArg); args.push_back(isolatedArg); @@ -7575,7 +7575,7 @@ void SILGenFunction::emitProtocolWitness( break; } case ActorIsolation::ActorInstance: - case ActorIsolation::CallerIsolationInheriting: { + case ActorIsolation::NonisolatedCaller: { auto witnessIsolation = swift::getActorIsolation(witness.getAbstractFunctionDecl()); switch (witnessIsolation) { @@ -7594,7 +7594,7 @@ void SILGenFunction::emitProtocolWitness( break; } case ActorIsolation::ActorInstance: - case ActorIsolation::CallerIsolationInheriting: { + case ActorIsolation::NonisolatedCaller: { auto isolatedArg = F.maybeGetIsolatedArgument(); assert(isolatedArg); args.push_back(isolatedArg); diff --git a/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp b/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp index a385a2475d442..c8d2d91d04f61 100644 --- a/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp +++ b/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp @@ -1067,7 +1067,7 @@ void LifetimeChecker::injectActorHops() { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::GlobalActor: return; diff --git a/lib/SILOptimizer/Mandatory/OptimizeHopToExecutor.cpp b/lib/SILOptimizer/Mandatory/OptimizeHopToExecutor.cpp index cd87b45568776..faa1b8d5994e7 100644 --- a/lib/SILOptimizer/Mandatory/OptimizeHopToExecutor.cpp +++ b/lib/SILOptimizer/Mandatory/OptimizeHopToExecutor.cpp @@ -327,7 +327,7 @@ void OptimizeHopToExecutor::updateNeedExecutor(int &needExecutor, // isolation inheriting functions as suspension points, meaning this code can // be deleted. if (auto fas = FullApplySite::isa(inst); - fas && fas.isAsync() && fas.isCallerIsolationInheriting()) { + fas && fas.isAsync() && fas.isNonisolatedCaller()) { needExecutor = BlockState::ExecutorNeeded; return; } @@ -343,7 +343,7 @@ void OptimizeHopToExecutor::updateNeedExecutor(int &needExecutor, // considered suspension points, we will be able to sink this code into needs // executor. if (auto isolation = inst->getFunction()->getActorIsolation(); - isolation && isolation->isCallerIsolationInheriting() && + isolation && isolation->isNonisolatedCaller() && isa(inst)) { needExecutor = BlockState::ExecutorNeeded; return; diff --git a/lib/SILOptimizer/Utils/SILIsolationInfo.cpp b/lib/SILOptimizer/Utils/SILIsolationInfo.cpp index 3feb4720b13d6..f998630c39fd2 100644 --- a/lib/SILOptimizer/Utils/SILIsolationInfo.cpp +++ b/lib/SILOptimizer/Utils/SILIsolationInfo.cpp @@ -939,7 +939,7 @@ SILIsolationInfo SILIsolationInfo::get(SILInstruction *inst) { /// into another isolation domain. if (auto *mi = dyn_cast(inst)) { if (auto funcIsolation = mi->getFunction()->getActorIsolation(); - funcIsolation && funcIsolation->isCallerIsolationInheriting()) { + funcIsolation && funcIsolation->isNonisolatedCaller()) { return SILIsolationInfo::getTaskIsolated(mi) .withNonisolatedNonsendingTaskIsolated(true); } @@ -1008,7 +1008,7 @@ SILIsolationInfo SILIsolationInfo::get(SILArgument *arg) { // See if the function is nonisolated(nonsending). In such a case, return // task isolated. if (auto funcIsolation = fArg->getFunction()->getActorIsolation(); - funcIsolation && funcIsolation->isCallerIsolationInheriting()) { + funcIsolation && funcIsolation->isNonisolatedCaller()) { return SILIsolationInfo::getTaskIsolated(fArg) .withNonisolatedNonsendingTaskIsolated(true); } @@ -1264,7 +1264,7 @@ void SILIsolationInfo::printActorIsolationForDiagnostics( // @concurrent for nonisolated and nonisolated for caller isolation inherited. if (fn->isAsync() && fn->getASTContext().LangOpts.hasFeature( Feature::NonisolatedNonsendingByDefault)) { - if (iso.isCallerIsolationInheriting()) { + if (iso.isNonisolatedCaller()) { os << "nonisolated"; return; } diff --git a/lib/Sema/CSApply.cpp b/lib/Sema/CSApply.cpp index a6d86969ff3f7..16e537c64c027 100644 --- a/lib/Sema/CSApply.cpp +++ b/lib/Sema/CSApply.cpp @@ -1324,7 +1324,7 @@ namespace { return ActorIsolation::forGlobalActor( thunkTy->getIsolation().getGlobalActorType()); case FunctionTypeIsolation::Kind::NonIsolatedCaller: - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } } @@ -1560,7 +1560,7 @@ namespace { // 2. There is a strong invariant in the compiler today that caller // isolation inheriting is always async. By using nonisolated here, we // avoid breaking that invariant. - if (!outerThunkTy->isAsync() && f->isCallerIsolationInheriting()) + if (!outerThunkTy->isAsync() && f->isNonisolatedCaller()) return {}; return f; }(); diff --git a/lib/Sema/ConstraintSystem.cpp b/lib/Sema/ConstraintSystem.cpp index 49b58eecf2f67..184669b24f92c 100644 --- a/lib/Sema/ConstraintSystem.cpp +++ b/lib/Sema/ConstraintSystem.cpp @@ -5195,7 +5195,7 @@ ConstraintSystem::inferKeyPathLiteralCapability(KeyPathExpr *keyPath) { switch (getActorIsolation(choice.getDecl())) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: break; diff --git a/lib/Sema/TypeCheckConcurrency.cpp b/lib/Sema/TypeCheckConcurrency.cpp index d6bf0fdc4a0d2..49127ff3b826e 100644 --- a/lib/Sema/TypeCheckConcurrency.cpp +++ b/lib/Sema/TypeCheckConcurrency.cpp @@ -122,7 +122,7 @@ static bool requiresFlowIsolation(ActorIsolation typeIso, return false; // TODO: We probably want constructors to always be truly non-isolated. - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: llvm_unreachable("constructor cannot have nonisolated implicit actor " "instance isolation"); case ActorIsolation::Erased: @@ -551,7 +551,7 @@ static bool varIsSafeAcrossActors(const ModuleDecl *fromModule, VarDecl *var, // if nonisolated, it's OK return true; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: return false; case ActorIsolation::Erased: @@ -1778,7 +1778,7 @@ static bool wasLegacyEscapingUseRestriction(AbstractFunctionDecl *fn) { case ActorIsolation::Unspecified: assert(!fn->hasAsync()); return true; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: llvm_unreachable( "destructor decl cannot have non implicit actor instance isolation"); case ActorIsolation::Erased: @@ -1799,7 +1799,7 @@ static bool wasLegacyEscapingUseRestriction(AbstractFunctionDecl *fn) { return false; case ActorIsolation::Erased: llvm_unreachable("constructor decl cannot have erased isolation"); - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: llvm_unreachable( "constructor decl cannot have caller isolation inheriting isolation"); @@ -2059,7 +2059,7 @@ static ActorIsolation getInnermostIsolatedContext( auto mutableDC = const_cast(dc); switch (auto isolation = getActorIsolationOfContext(mutableDC, getClosureActorIsolation)) { - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::ActorInstance: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: @@ -2413,7 +2413,7 @@ namespace { (!fn->isAsyncContext() || fn != dc)) { switch (getActorIsolation(fn)) { case ActorIsolation::ActorInstance: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::GlobalActor: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: @@ -2990,7 +2990,7 @@ namespace { // Similarly to Nonisolated, caller inheriting isolation because we will // inherit from the context. - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: return; case ActorIsolation::Erased: @@ -3603,7 +3603,7 @@ namespace { switch (isolation) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: if (closure->isSendable()) { return ReferencedActor(var, isPotentiallyIsolated, ReferencedActor::SendableClosure); @@ -3662,7 +3662,7 @@ namespace { // while general isolation is declaration-based. switch (auto isolation = getActorIsolationOfContext(dc, getClosureActorIsolation)) { - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: @@ -4150,7 +4150,7 @@ namespace { !fnTypeIsolation.isNonIsolatedCaller()) unsatisfiedIsolation = ActorIsolation::forNonisolated(/*unsafe=*/false); - else if (getContextIsolation().isCallerIsolationInheriting() && + else if (getContextIsolation().isNonisolatedCaller() && fnTypeIsolation.isNonIsolated()) unsatisfiedIsolation = ActorIsolation::forNonisolated(/*unsafe=*/false); @@ -4380,7 +4380,7 @@ namespace { case ActorIsolation::NonisolatedUnsafe: actorExpr = new (ctx) NilLiteralExpr(loc, /*implicit=*/false); break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: // For caller isolation this expression will be replaced in SILGen // because we're adding an implicit isolated parameter that #isolated // must resolve to, but cannot do so during AST expansion quite yet. @@ -4522,7 +4522,7 @@ namespace { decl, getDeclContext()); switch (isolation) { case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: break; @@ -4736,7 +4736,7 @@ namespace { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: refKind = ReferencedActor::NonIsolatedContext; break; @@ -4846,7 +4846,7 @@ computeClosureIsolationFromParent(DeclContext *closure, bool checkIsolatedCapture) { // We must have parent isolation determined to get here. switch (parentIsolation) { - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: @@ -4929,7 +4929,7 @@ ActorIsolation ActorIsolationChecker::determineClosureIsolation( if (auto closureTy = getType(closure)) { if (auto *closureFnTy = closureTy->getAs()) { if (closureFnTy->getIsolation().isNonIsolatedCaller()) - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } } @@ -4976,7 +4976,7 @@ ActorIsolation ActorIsolationChecker::determineClosureIsolation( if (expectedIsolation.isNonIsolatedCaller()) { auto captureInfo = explicitClosure->getCaptureInfo(); if (!captureInfo.getIsolatedParamCapture()) - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } } } @@ -5157,7 +5157,7 @@ getIsolationFromAttributes(const Decl *decl, bool shouldDiagnose = true, if (nonisolatedAttr) { // 'nonisolated(nonsending)' modifier is set on the decl. if (nonisolatedAttr->isNonSending()) - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); // If the nonisolated async inherits isolation from context, // return caller isolation inheriting. @@ -5166,7 +5166,7 @@ getIsolationFromAttributes(const Decl *decl, bool shouldDiagnose = true, if (auto *value = dyn_cast(decl)) { if (value->isAsync() && value->getModuleContext() == decl->getASTContext().MainModule) { - return ActorIsolation::forCallerIsolationInheriting(); + return ActorIsolation::forNonisolatedCaller(); } } } @@ -5328,7 +5328,7 @@ getIsolationFromWitnessedRequirements(ValueDecl *value) { case ActorIsolation::Erased: llvm_unreachable("requirement cannot have erased isolation"); - case ActorIsolation::CallerIsolationInheriting: { + case ActorIsolation::NonisolatedCaller: { if (value->isAsync()) break; @@ -5364,7 +5364,7 @@ getIsolationFromWitnessedRequirements(ValueDecl *value) { case ActorIsolation::ActorInstance: llvm_unreachable("protocol requirements cannot be actor instances"); - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::Nonisolated: case ActorIsolation::NonisolatedUnsafe: // We only need one nonisolated. @@ -5443,7 +5443,7 @@ getIsolationFromConformances(NominalTypeDecl *nominal) { switch (protoIsolation) { case ActorIsolation::ActorInstance: case ActorIsolation::Unspecified: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: break; case ActorIsolation::Nonisolated: @@ -5494,7 +5494,7 @@ getIsolationFromInheritedProtocols(ProtocolDecl *protocol) { case ActorIsolation::ActorInstance: case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: return; @@ -5569,7 +5569,7 @@ getIsolationFromWrappers(NominalTypeDecl *nominal) { case ActorIsolation::ActorInstance: case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: break; @@ -5768,7 +5768,7 @@ static bool checkClassGlobalActorIsolation( switch (superIsolation) { case ActorIsolation::Unspecified: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: { return false; } @@ -5970,7 +5970,7 @@ static void addAttributesForActorIsolation(ValueDecl *value, ActorIsolation isolation) { ASTContext &ctx = value->getASTContext(); switch (isolation) { - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: value->getAttrs().add(new (ctx) NonisolatedAttr( /*atLoc=*/{}, /*range=*/{}, NonIsolatedModifier::NonSending, /*implicit=*/true)); @@ -6153,7 +6153,7 @@ computeDefaultInferredActorIsolation(ValueDecl *value) { if (ctx.LangOpts.hasFeature(Feature::NonisolatedNonsendingByDefault)) { if (value->isAsync() && value->getModuleContext() == ctx.MainModule) { return { - {ActorIsolation::forCallerIsolationInheriting(), {}}, nullptr, {}}; + {ActorIsolation::forNonisolatedCaller(), {}}, nullptr, {}}; } } @@ -6183,7 +6183,7 @@ computeDefaultInferredActorIsolation(ValueDecl *value) { // If this is an override of an async completion handler, mark // it `@concurrent` instead of inferring `nonisolated(nonsending)` // to preserve pre-SE-0461 behavior. - if (isolation.isCallerIsolationInheriting() && + if (isolation.isNonisolatedCaller() && overriddenValue->hasClangNode()) { if (auto *AFD = dyn_cast(overriddenValue)) { if (AFD->getForeignAsyncConvention()) { @@ -6209,7 +6209,7 @@ computeDefaultInferredActorIsolation(ValueDecl *value) { if (!isa(AFD->getDeclContext()) && AFD->getForeignAsyncConvention()) { return { - {ActorIsolation::forCallerIsolationInheriting(), {}}, nullptr, {}}; + {ActorIsolation::forNonisolatedCaller(), {}}, nullptr, {}}; } } } @@ -6261,14 +6261,14 @@ static InferredActorIsolation computeActorIsolation(Evaluator &evaluator, value->getAttrs().add(preconcurrency); } - // Check if we inferred CallerIsolationInheriting from our isolation attr, but - // did not have an ExecutionKind::Caller attached to it. + // Check if we inferred NonisolatedCaller from our isolation attr, but + // did not have `nonsending` modifier. // // DISCUSSION: This occurs when we have a value decl that is explicitly marked // as nonisolated but since NonisolatedNonsendingByDefault is enabled, we return - // CallerIsolationInheriting. + // NonisolatedCaller. if (isolationFromAttr && isolationFromAttr->getKind() == - ActorIsolation::CallerIsolationInheriting) { + ActorIsolation::NonisolatedCaller) { auto nonisolated = value->getAttrs().getAttribute(); // Replace `nonisolated` with `nonisolated(nonsending)` if (!nonisolated || !nonisolated->isNonSending()) { @@ -6362,7 +6362,7 @@ static InferredActorIsolation computeActorIsolation(Evaluator &evaluator, // Add nonisolated attribute addAttributesForActorIsolation(value, inferred); break; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: addAttributesForActorIsolation(value, inferred); break; case ActorIsolation::Erased: @@ -6556,7 +6556,7 @@ static InferredActorIsolation computeActorIsolation(Evaluator &evaluator, if (ctx.LangOpts.hasFeature(Feature::NonisolatedNonsendingByDefault) && value->isAsync() && value->getModuleContext() == ctx.MainModule && isolation.isNonisolated()) { - isolation = ActorIsolation::forCallerIsolationInheriting(); + isolation = ActorIsolation::forNonisolatedCaller(); } return {inferredIsolation(isolation, onlyGlobal), @@ -6581,12 +6581,11 @@ static InferredActorIsolation computeActorIsolation(Evaluator &evaluator, // We did not invoke any earlier rules... so just return the default // isolation. if (defaultIsolation.isolation.getKind() == - ActorIsolation::CallerIsolationInheriting) { + ActorIsolation::NonisolatedCaller) { // If we have caller isolation inheriting, attach the attribute for it so - // that we preserve that we chose CallerIsolationInheriting through - // serialization. We do this since we need to support compiling where - // nonisolated is the default and where caller isolation inheriting is the - // default. + // that we preserve that we chose NonisolatedCaller through serialization. + // We do this since we need to support compiling where nonisolated is the + // default and where caller isolation inheriting is the default. addAttributesForActorIsolation(value, defaultIsolation.isolation); } return defaultIsolation; @@ -6667,7 +6666,7 @@ bool HasIsolatedSelfRequest::evaluate( if (auto var = dyn_cast(value)) { switch (auto isolation = getActorIsolationFromWrappedProperty(var)) { case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: break; @@ -7224,7 +7223,7 @@ bool swift::checkSendableConformance( case ActorIsolation::Unspecified: case ActorIsolation::ActorInstance: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: break; @@ -7740,7 +7739,7 @@ AnyFunctionType *swift::adjustFunctionTypeForConcurrency( // The function type may or may not have parameter isolation. return fnType; - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: assert(fnType->getIsolation().isNonIsolated()); funcIsolation = FunctionTypeIsolation::forNonIsolatedCaller(); break; @@ -8039,7 +8038,7 @@ bool swift::isAccessibleAcrossActors( switch (isolation) { case ActorIsolation::ActorInstance: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: return true; @@ -8148,7 +8147,7 @@ ActorReferenceResult ActorReferenceResult::forReference( getInnermostIsolatedContext(fromDC, getClosureActorIsolation); } - if (declIsolation.isCallerIsolationInheriting()) + if (declIsolation.isNonisolatedCaller()) return forSameConcurrencyDomain(declIsolation, options); // When the declaration is not actor-isolated, it can always be accessed @@ -8161,7 +8160,7 @@ ActorReferenceResult ActorReferenceResult::forReference( // context (of any kind) or it is a caller isolation inheriting, then // we exit the actor to the nonisolated context. if (decl->isAsync() && (contextIsolation.isActorIsolated() || - contextIsolation.isCallerIsolationInheriting())) + contextIsolation.isNonisolatedCaller())) return forExitsActorToNonisolated(contextIsolation, options); // Otherwise, we stay in the same concurrency domain, whether on an actor diff --git a/lib/Sema/TypeCheckDeclObjC.cpp b/lib/Sema/TypeCheckDeclObjC.cpp index e5eba98b73030..1974c388b6088 100644 --- a/lib/Sema/TypeCheckDeclObjC.cpp +++ b/lib/Sema/TypeCheckDeclObjC.cpp @@ -546,7 +546,7 @@ static bool checkObjCActorIsolation(const ValueDecl *VD, ObjCReason Reason) { llvm_unreachable("decl cannot have dynamic isolation"); case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: return false; diff --git a/lib/Sema/TypeCheckPropertyWrapper.cpp b/lib/Sema/TypeCheckPropertyWrapper.cpp index ed8dbea775570..8ca99015dfb72 100644 --- a/lib/Sema/TypeCheckPropertyWrapper.cpp +++ b/lib/Sema/TypeCheckPropertyWrapper.cpp @@ -100,7 +100,7 @@ static VarDecl *findValueProperty(ASTContext &ctx, NominalTypeDecl *nominal, case ActorIsolation::GlobalActor: case ActorIsolation::Nonisolated: - case ActorIsolation::CallerIsolationInheriting: + case ActorIsolation::NonisolatedCaller: case ActorIsolation::NonisolatedUnsafe: case ActorIsolation::Unspecified: break; diff --git a/lib/Serialization/Deserialization.cpp b/lib/Serialization/Deserialization.cpp index 904329b7ccd97..872f01e47ffc3 100644 --- a/lib/Serialization/Deserialization.cpp +++ b/lib/Serialization/Deserialization.cpp @@ -507,7 +507,7 @@ getActualActorIsolationKind(uint8_t raw) { CASE(Unspecified) CASE(ActorInstance) CASE(Nonisolated) - CASE(CallerIsolationInheriting) + CASE(NonisolatedCaller) CASE(NonisolatedUnsafe) CASE(GlobalActor) CASE(Erased) @@ -4244,8 +4244,8 @@ class DeclDeserializer { isolation = ActorIsolation::forUnspecified(); break; - case ActorIsolation::CallerIsolationInheriting: - isolation = ActorIsolation::forCallerIsolationInheriting(); + case ActorIsolation::NonisolatedCaller: + isolation = ActorIsolation::forNonisolatedCaller(); break; case ActorIsolation::Erased: diff --git a/lib/Serialization/ModuleFormat.h b/lib/Serialization/ModuleFormat.h index 4b93691c9b1c1..3c05ea33219aa 100644 --- a/lib/Serialization/ModuleFormat.h +++ b/lib/Serialization/ModuleFormat.h @@ -565,7 +565,7 @@ enum class ActorIsolation : uint8_t { GlobalActor, GlobalActorUnsafe, Erased, - CallerIsolationInheriting, + NonisolatedCaller, }; using ActorIsolationField = BCFixed<3>; diff --git a/lib/Serialization/Serialization.cpp b/lib/Serialization/Serialization.cpp index b46074388a213..5130a15079480 100644 --- a/lib/Serialization/Serialization.cpp +++ b/lib/Serialization/Serialization.cpp @@ -1564,7 +1564,7 @@ getRawStableActorIsolationKind(swift::ActorIsolation::Kind kind) { CASE(Unspecified) CASE(ActorInstance) CASE(Nonisolated) - CASE(CallerIsolationInheriting) + CASE(NonisolatedCaller) CASE(NonisolatedUnsafe) CASE(GlobalActor) CASE(Erased) @@ -1944,7 +1944,7 @@ void Serializer::writeLocalNormalProtocolConformance( case swift::ActorIsolation::ActorInstance: case swift::ActorIsolation::NonisolatedUnsafe: case swift::ActorIsolation::Erased: - case swift::ActorIsolation::CallerIsolationInheriting: + case swift::ActorIsolation::NonisolatedCaller: llvm_unreachable("Conformances cannot have this kind of isolation"); }