Merge pull request #9347 from ethereum/moretests

Add create & delete array tests for yul
This commit is contained in:
chriseth 2020-07-08 18:09:57 +02:00 committed by GitHub
commit 19ec9ecbfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 1 deletions

View File

@ -16,6 +16,7 @@ contract C {
return (x[199], y[203][1], z[170].a[1], z[170].b[99]);
}
}
// ====
// compileViaYul: also
// ----
// f() -> "A", 8, 4, "B"

View File

@ -0,0 +1,17 @@
contract C {
function len() public returns (uint ret) {
uint[] memory data = new uint[](2);
data[0] = 234;
data[1] = 123;
delete data;
assembly {
ret := mload(data)
}
}
}
// ====
// compileViaYul: also
// ----
// len() -> 0

View File

@ -0,0 +1,40 @@
contract C {
uint[] data;
function len() public returns (uint ret) {
data.push(234);
data.push(123);
delete data;
assembly {
ret := sload(data_slot)
}
}
function val() public returns (uint ret) {
assembly {
sstore(0, 2)
mstore(0, 0)
sstore(keccak256(0, 32), 234)
sstore(add(keccak256(0, 32), 1), 123)
}
assert(data[0] == 234);
assert(data[1] == 123);
delete data;
uint size = 999;
assembly {
size := sload(0)
mstore(0, 0)
ret := sload(keccak256(0, 32))
}
}
}
// ====
// compileViaYul: also
// ----
// len() -> 0
// val() -> 0