fix(cheatcodes
): disallow using vm.prank
after vm.startPrank
#5520
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.
Motivation
Closes #5515 . This problem (
tx.origin
not being updated correctly after doingvm.prank
after avm.startPrank
) is introduced in part due to #4884 — we now have certain rules to override pranks that weren't explicit enough in the code. You should probably not be able to callvm.prank
after avm.startPrank
, asvm.startPrank
is "multi-use" and must be stopped, whilevm.prank
is "single use", and one should not overlap the other, as you can usevm.startPrank
again after having used the first startPrank. This is made a little confusing as we don't have achangePrank
cheatcode, but rather re-usevm.startPrank
for this.We could probably make a case for allowing this, but this feels like a hard-to-explain possible footgun and I'd rather disallow it entirely.
Solution
Disallow calling
vm.prank
after avm.startPrank
.