mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-10-20 18:56:17 +00:00
Add integration test for deleting struct (#459)
Differentially tests the behavior of deleting a struct with a member that do not occupy the full 32-byte slot. From [this issue](https://github.com/paritytech/contract-issues/issues/118) it was unclear whether the `delete` was expected to reset only the bytes occupied or the entire slot. The current behavior of resetting the entire slot is expected.
This commit is contained in:
3 files changed
+50
-7
No files matched your search
@@ -0,0 +1,45 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity ^0.8;
|
||||
|
||||
/* runner.json
|
||||
{
|
||||
"differential": true,
|
||||
"actions": [
|
||||
{
|
||||
"Instantiate": {
|
||||
"code": {
|
||||
"Solidity": {
|
||||
"contract": "StructDeleteStorage"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Call": {
|
||||
"dest": {
|
||||
"Instantiated": 0
|
||||
},
|
||||
"data": "e70c830d"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
contract StructDeleteStorage {
|
||||
struct S {
|
||||
uint8 a;
|
||||
}
|
||||
S s;
|
||||
|
||||
function store_and_delete() public returns (uint256 r1) {
|
||||
assembly {
|
||||
sstore(s.slot, 0xffffff)
|
||||
}
|
||||
delete s;
|
||||
assembly {
|
||||
r1 := sload(s.slot)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user