allow calling mutation_free function inside a mutation_free context #7253
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This should fix #5874
I'm pretty lost however on all the annotations of purity/mutability that exists, which can be applied on which symbols and which annotation can be called inside which one.
For example, :
pure
can only be annotated on a method/functionimmutable
can be annotated on a classpure
functions inimmutable
scopeexternal-mutation-free
class inside animmutable
scope?It'd be great if someone could take the time to revamp the part of the doc that talks about all those: https://psalm.dev/docs/annotating_code/supported_annotations/#psalm-mutation-free
To explain the interactions between them. I'm pretty sure there are a lot of places with similar issues that I fixed here, partly because it's not very transparent what goes into what.