mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add test for operator overloaded by data location
This commit is contained in:
parent
616988da15
commit
516e92ee96
@ -0,0 +1,53 @@
|
|||||||
|
using {
|
||||||
|
addC as +,
|
||||||
|
addM as +,
|
||||||
|
addS as +
|
||||||
|
} for S;
|
||||||
|
|
||||||
|
struct S {
|
||||||
|
uint v;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addC(S calldata _s, S calldata) pure returns (S calldata) {
|
||||||
|
return _s;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addM(S memory _s, S memory) pure returns (S memory) {
|
||||||
|
_s.v = 7;
|
||||||
|
return _s;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addS(S storage _s, S storage) returns (S storage) {
|
||||||
|
_s.v = 13;
|
||||||
|
return _s;
|
||||||
|
}
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
S s;
|
||||||
|
|
||||||
|
function testC(S calldata _s) public returns (S calldata) {
|
||||||
|
return _s + _s;
|
||||||
|
}
|
||||||
|
|
||||||
|
function testM() public returns (S memory) {
|
||||||
|
S memory sTmp;
|
||||||
|
return sTmp + sTmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
function testS() public returns (uint) {
|
||||||
|
s + s;
|
||||||
|
return s.v;
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSTmp() public returns (uint) {
|
||||||
|
S storage sTmp = s;
|
||||||
|
sTmp + sTmp;
|
||||||
|
return sTmp.v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----
|
||||||
|
// testC((uint256)): 3 -> 3
|
||||||
|
// testM()-> 7
|
||||||
|
// testS() -> 13
|
||||||
|
// testSTmp() -> 13
|
Loading…
Reference in New Issue
Block a user