-
Notifications
You must be signed in to change notification settings - Fork 2.1k
chore: Fix Mutability Tags for Cheatcodes that are Missing Them #10351
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: Fix Mutability Tags for Cheatcodes that are Missing Them #10351
Conversation
5f5ec27
to
5d97d85
Compare
…es that need a mutability modifier
…s with no mutability and add mutability checklist
…cheatcode as pure
…test indicating stateful behavior
…ave side effect logic
…gth getMappingSlotAt view
… are external view
… view/pure modifiers
26238e8
to
8ec5aaa
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm, thanks!
crates/cheatcodes/spec/src/vm.rs
Outdated
@@ -594,7 +595,7 @@ interface Vm { | |||
|
|||
/// Utility cheatcode to remove any EIP-2930 access list set by `accessList` cheatcode. | |||
#[cheatcode(group = Evm, safety = Unsafe)] | |||
function noAccessList() external; | |||
function noAccessList() external view; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is stateful, imo this should not be view
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
resolved in ba90336
Thanks @Mouzayan for your PR! |
Summary
This draft PR closes #10027 by reviewing and updating the mutability modifiers (view / pure) on cheatcodes that were previously declared external without an explicit mutability tag.
Motivation
This was a chore tracked in the repo.
Solution
Followed the plan below:
• Identified cheatcodes currently marked external with no view or pure modifier.
• Evaluated each case to determine:
• If the cheatcode mutates observable state (EVM, filesystem, logs, interpreter) → left as-is.
• If the cheatcode reads state but does not mutate → marked as view.
• If the cheatcode has no dependencies or side effects → marked as pure.
• Updated ABI declarations and signatures accordingly.
Note
• Ran
cargo check
,cargo clippy
, andcargo +nightly fmt --check
, all passed.• Ran
cargo test --all --all-features
multiple times. Observed inconsistent failures across unrelated tests.• To verify test isolation, ran:
cargo test --all --all-features -- --test-threads=1
.With this, previously failing tests (like
decode_traces_with_project_artifacts
) passed.PR Checklist