mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Only warn about variables being shadowed in inline assembly.
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
contract c {
|
||||
function f() public {
|
||||
uint create2; create2;
|
||||
assembly { pop(create2(0, 0, 0, 0)) }
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=constantinople
|
||||
// ----
|
||||
@@ -0,0 +1,11 @@
|
||||
contract c {
|
||||
function f() public {
|
||||
uint create2; create2;
|
||||
assembly { pop(create2(0, 0, 0, 0)) }
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: =byzantium
|
||||
// ----
|
||||
// TypeError 6166: (78-85): The "create2" instruction is only available for Constantinople-compatible VMs (you are currently compiling for "byzantium").
|
||||
// TypeError 3950: (78-97): Expected expression to evaluate to one value, but got 0 values instead.
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
contract c {
|
||||
function f() public view {
|
||||
uint extcodehash;
|
||||
extcodehash;
|
||||
assembly { pop(extcodehash(0)) }
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=constantinople
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
contract c {
|
||||
function f() public view {
|
||||
uint extcodehash;
|
||||
extcodehash;
|
||||
assembly { pop(extcodehash(0)) }
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: =byzantium
|
||||
// ----
|
||||
// TypeError 7110: (93-104): The "extcodehash" instruction is only available for Constantinople-compatible VMs (you are currently compiling for "byzantium").
|
||||
// TypeError 3950: (93-107): Expected expression to evaluate to one value, but got 0 values instead.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
uint returndatasize;
|
||||
returndatasize;
|
||||
assembly {
|
||||
let x := returndatasize()
|
||||
}
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
uint returndatasize;
|
||||
returndatasize;
|
||||
assembly {
|
||||
returndatasize := 2
|
||||
}
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
// ----
|
||||
// ParserError 6272: (143-145): Cannot assign to builtin function "returndatasize".
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
contract C { function f() public pure { uint returndatasize; returndatasize; assembly { pop(returndatasize()) }}}
|
||||
// ====
|
||||
// EVMVersion: =homestead
|
||||
// ----
|
||||
// TypeError 4778: (92-106): The "returndatasize" instruction is only available for Byzantium-compatible VMs (you are currently compiling for "homestead").
|
||||
// TypeError 3950: (92-108): Expected expression to evaluate to one value, but got 0 values instead.
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
uint returndatasize;
|
||||
returndatasize;
|
||||
assembly {
|
||||
let x := returndatasize
|
||||
}
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
// ----
|
||||
// ParserError 7104: (137-151): Builtin function "returndatasize" must be called.
|
||||
@@ -0,0 +1,8 @@
|
||||
function mload() pure {}
|
||||
contract C {
|
||||
function g() public pure {
|
||||
assembly {
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----
|
||||
@@ -0,0 +1,9 @@
|
||||
contract C {
|
||||
function add(uint, uint) public pure returns (uint) { return 7; }
|
||||
function g() public pure returns (uint x, uint y) {
|
||||
x = add(1, 2);
|
||||
assembly {
|
||||
y := add(1, 2)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
contract C {
|
||||
uint mload;
|
||||
function g() public pure {
|
||||
assembly {
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----
|
||||
@@ -9,6 +9,5 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8261: (109-119): Variable is shadowed in inline assembly by an instruction of the same name
|
||||
// Warning 2072: (52-62): Unused local variable.
|
||||
// Warning 2072: (109-119): Unused local variable.
|
||||
|
||||
Reference in New Issue
Block a user