mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add more comprehensive tests for embedded inline assembly LValue/RValue access
This commit is contained in:
parent
167fe7c370
commit
d647761058
@ -0,0 +1,9 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public pure {
|
||||||
|
assembly {
|
||||||
|
let x := C
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError: (72-73): Expected a library.
|
@ -0,0 +1,7 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public pure {
|
||||||
|
assembly {
|
||||||
|
let x := f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
library L {
|
||||||
|
}
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
function f() public pure {
|
||||||
|
assembly {
|
||||||
|
let x := L
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public pure {
|
||||||
|
assembly {
|
||||||
|
let x := super
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// DeclarationError: (72-77): Identifier not found.
|
@ -0,0 +1,13 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public {
|
||||||
|
assembly {
|
||||||
|
super := 1
|
||||||
|
f := 1
|
||||||
|
C := 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError: (58-63): Only local variables can be assigned to in inline assembly.
|
||||||
|
// TypeError: (75-76): Only local variables can be assigned to in inline assembly.
|
||||||
|
// TypeError: (88-89): Only local variables can be assigned to in inline assembly.
|
@ -0,0 +1,13 @@
|
|||||||
|
contract C {
|
||||||
|
uint[] x;
|
||||||
|
function() external {
|
||||||
|
uint[] storage y = x;
|
||||||
|
assembly {
|
||||||
|
y_slot := 1
|
||||||
|
y_offset := 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError: (115-121): Storage variables cannot be assigned to.
|
||||||
|
// TypeError: (139-147): Storage variables cannot be assigned to.
|
@ -0,0 +1,13 @@
|
|||||||
|
contract C {
|
||||||
|
uint[] x;
|
||||||
|
function() external {
|
||||||
|
uint[] memory y = x;
|
||||||
|
assembly {
|
||||||
|
pop(y_slot)
|
||||||
|
pop(y_offset)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError: (118-124): The suffixes _offset and _slot can only be used on storage variables.
|
||||||
|
// TypeError: (142-150): The suffixes _offset and _slot can only be used on storage variables.
|
Loading…
Reference in New Issue
Block a user