swift
dc8e4794 - [region-isolation] Make sure that we treat Sendable functions as Sendable.

Commit
1 year ago
[region-isolation] Make sure that we treat Sendable functions as Sendable. The reason for this issue is that we were originally checking in our NonSendable type oracle just if a type conformed to Sendable. But function types do not conform to protocols, so this would fail for protocols. To fix this, I added some helper methods to call swift::isSendableType on SILType, called that in our oracle, and then I added support in swift::isSendableType for both SILFunctionType and AnyFunctionType so that we correctly handle them depending on their sendability. There was also a question if we also handled function conversions correctly. I added a test case that shows that we do not error in either of the cases. Another nice aspect of this change is that we no longer need to stash a pointer to a looked up Sendable protocol to perform the check since that just happens naturally inside SILType::isSendable() when it calls isSendableType. This is a better separation of concerns. rdar://116525224
Author
Committer
Parents
Loading