@@ -950,31 +950,30 @@ class TransferNonTransferrableDiagnosticInferrer {
950950
951951 struct UseDiagnosticInfo {
952952 UseDiagnosticInfoKind kind;
953- std::optional<ActorIsolation> transferredIsolation ;
953+ std::optional<ApplyIsolationCrossing> transferredIsolationCrossing = {} ;
954954
955955 static UseDiagnosticInfo forMiscUse () {
956- return {UseDiagnosticInfoKind::MiscUse, {} };
956+ return {UseDiagnosticInfoKind::MiscUse};
957957 }
958958
959959 static UseDiagnosticInfo
960- forFunctionArgumentApply (ActorIsolation isolation) {
960+ forFunctionArgumentApply (ApplyIsolationCrossing isolation) {
961961 return {UseDiagnosticInfoKind::FunctionArgumentApply, isolation};
962962 }
963963
964964 static UseDiagnosticInfo
965- forFunctionArgumentClosure (ActorIsolation isolation) {
965+ forFunctionArgumentClosure (ApplyIsolationCrossing isolation) {
966966 return {UseDiagnosticInfoKind::FunctionArgumentClosure, isolation};
967967 }
968968
969969 static UseDiagnosticInfo forFunctionArgumentApplyStronglyTransferred () {
970- return {UseDiagnosticInfoKind::FunctionArgumentApplyStronglyTransferred,
971- {}};
970+ return {UseDiagnosticInfoKind::FunctionArgumentApplyStronglyTransferred};
972971 }
973972
974973 private:
975974 UseDiagnosticInfo (UseDiagnosticInfoKind kind,
976- std::optional<ActorIsolation > isolation)
977- : kind(kind), transferredIsolation (isolation) {}
975+ std::optional<ApplyIsolationCrossing > isolation = {} )
976+ : kind(kind), transferredIsolationCrossing (isolation) {}
978977 };
979978
980979private:
@@ -1015,8 +1014,8 @@ bool TransferNonTransferrableDiagnosticInferrer::initForIsolatedPartialApply(
10151014 for (auto &p : foundCapturedIsolationCrossing) {
10161015 if (std::get<1 >(p) == opIndex) {
10171016 loc = std::get<0 >(p).getLoc ();
1018- diagnosticInfo = UseDiagnosticInfo::forFunctionArgumentClosure (
1019- std::get<2 >(p). getCalleeIsolation ( ));
1017+ diagnosticInfo =
1018+ UseDiagnosticInfo::forFunctionArgumentClosure ( std::get<2 >(p));
10201019 return true ;
10211020 }
10221021 }
@@ -1034,11 +1033,11 @@ bool TransferNonTransferrableDiagnosticInferrer::run() {
10341033 auto loc = info.transferredOperand ->getUser ()->getLoc ();
10351034
10361035 if (auto *sourceApply = loc.getAsASTNode <ApplyExpr>()) {
1037- std::optional<ActorIsolation > isolation = {};
1036+ std::optional<ApplyIsolationCrossing > isolation = {};
10381037
10391038 // First try to get the apply from the isolation crossing.
10401039 if (auto value = sourceApply->getIsolationCrossing ())
1041- isolation = value-> getCalleeIsolation () ;
1040+ isolation = value;
10421041
10431042 // If we could not infer an isolation...
10441043 if (!isolation) {
@@ -1105,7 +1104,8 @@ void TransferNonSendableImpl::emitTransferredNonTransferrableDiagnostics() {
11051104 case UseDiagnosticInfoKind::FunctionArgumentApply: {
11061105 diagnoseError (astContext, loc, diag::regionbasedisolation_arg_transferred,
11071106 op->get ()->getType ().getASTType (),
1108- diagnosticInfo.transferredIsolation .value ())
1107+ diagnosticInfo.transferredIsolationCrossing .value ()
1108+ .getCalleeIsolation ())
11091109 .highlight (op->getUser ()->getLoc ().getSourceRange ());
11101110 // Only emit the note if our value is different from the function
11111111 // argument.
@@ -1124,7 +1124,8 @@ void TransferNonSendableImpl::emitTransferredNonTransferrableDiagnostics() {
11241124 case UseDiagnosticInfoKind::FunctionArgumentClosure: {
11251125 diagnoseError (astContext, loc, diag::regionbasedisolation_arg_transferred,
11261126 op->get ()->getType ().getASTType (),
1127- diagnosticInfo.transferredIsolation .value ())
1127+ diagnosticInfo.transferredIsolationCrossing .value ()
1128+ .getCalleeIsolation ())
11281129 .highlight (op->getUser ()->getLoc ().getSourceRange ());
11291130 // Only emit the note if our value is different from the function
11301131 // argument.
0 commit comments