Add assertion macro#1688
Open
gloskull wants to merge 3 commits into
Open
Conversation
…dX#1576 Co-authored-by: gloskull <189399494+gloskull@users.noreply.github.com>
…270204059934 Add a "view-only" assertion macro
Author
|
Done with this issue. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Implemented the assert_view_only! macro to prevent accidental state mutation in read-only contexts.
Key changes:
Added assert_view_only! macro in diagnostics.rs.
Implemented StorageManager::with_view_only in storage.rs to wrap execution in a restricted mode.
Integrated the macro into InvoiceStorage, BidStorage, and InvestmentStorage mutating operations.
Protected invariant_self_check and preview_protocol_config using the new view-only context.
Added test_view_only.rs with happy and sad path verification.
Resolved significant pre-existing build issues (duplicate definitions, cycle dependencies, missing imports, non-exhaustive matches) to ensure the contract compiles and passes tests.
Verified that the contract builds for WASM and passes the size budget check.
Closes #1576