mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix Yul codegen when dynamic array is used as rhs of assignment
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
contract C {
|
||||
function f(uint n) public pure returns (uint) {
|
||||
uint[][] memory a = new uint[][](2);
|
||||
for (uint i = 0; i < 2; ++i)
|
||||
a[i] = new uint[](3);
|
||||
a[1][1] = n;
|
||||
uint[] memory b = a[1];
|
||||
return b[1];
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(uint256): 42 -> 42
|
||||
@@ -0,0 +1,12 @@
|
||||
contract C {
|
||||
function f(uint n) public pure returns (uint) {
|
||||
uint[][] memory a = new uint[][](2);
|
||||
for (uint i = 0; i < 2; ++i)
|
||||
a[i] = new uint[](3);
|
||||
return a[0][0] = n;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(uint256): 42 -> 42
|
||||
@@ -0,0 +1,19 @@
|
||||
contract C {
|
||||
function f(uint n) public pure returns (uint) {
|
||||
uint[][][] memory a = new uint[][][](2);
|
||||
for (uint i = 0; i < 2; ++i)
|
||||
{
|
||||
a[i] = new uint[][](3);
|
||||
for (uint j = 0; j < 3; ++j)
|
||||
a[i][j] = new uint[](4);
|
||||
}
|
||||
a[1][1][1] = n;
|
||||
uint[][] memory b = a[1];
|
||||
uint[] memory c = b[1];
|
||||
return c[1];
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(uint256): 42 -> 42
|
||||
@@ -0,0 +1,16 @@
|
||||
contract C {
|
||||
function f(uint n) public pure returns (uint) {
|
||||
uint[][][] memory a = new uint[][][](2);
|
||||
for (uint i = 0; i < 2; ++i)
|
||||
{
|
||||
a[i] = new uint[][](3);
|
||||
for (uint j = 0; j < 3; ++j)
|
||||
a[i][j] = new uint[](4);
|
||||
}
|
||||
return a[1][1][1] = n;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(uint256): 42 -> 42
|
||||
Reference in New Issue
Block a user