mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
C99 scoping rules by default
This commit is contained in:
@@ -133,22 +133,6 @@ BOOST_AUTO_TEST_CASE(assignment_in_declaration)
|
||||
CHECK_SUCCESS_NO_WARNINGS(text);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(use_before_declaration)
|
||||
{
|
||||
string text = R"(
|
||||
contract C {
|
||||
function f() public pure { a = 3; uint a = 2; assert(a == 2); }
|
||||
}
|
||||
)";
|
||||
CHECK_SUCCESS_NO_WARNINGS(text);
|
||||
text = R"(
|
||||
contract C {
|
||||
function f() public pure { assert(a == 0); uint a = 2; assert(a == 2); }
|
||||
}
|
||||
)";
|
||||
CHECK_SUCCESS_NO_WARNINGS(text);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_call_does_not_clear_local_vars)
|
||||
{
|
||||
string text = R"(
|
||||
|
||||
@@ -5011,7 +5011,7 @@ BOOST_AUTO_TEST_CASE(byte_array_push_transition)
|
||||
if (data.length != i) return 0x1000 + i;
|
||||
if (data[data.length - 1] != byte(i)) return i;
|
||||
}
|
||||
for (i = 1; i < 40; i++)
|
||||
for (uint8 i = 1; i < 40; i++)
|
||||
if (data[i - 1] != byte(i)) return 0x1000000 + i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
contract test {
|
||||
function f() pure public {
|
||||
uint256 x;
|
||||
if (true) { uint256 x; }
|
||||
x = 1;
|
||||
if (true) { uint256 x; x = 2; }
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (71-80): Identifier already declared.
|
||||
// Warning: (80-89): This declaration shadows an existing declaration.
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
uint256 x;
|
||||
if (true) { uint256 x; }
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (101-110): This declaration shadows an existing declaration.
|
||||
// Warning: (76-85): Unused local variable.
|
||||
// Warning: (101-110): Unused local variable.
|
||||
+2
@@ -2,3 +2,5 @@ contract B {
|
||||
function f() mod(x) pure public { uint x = 7; }
|
||||
modifier mod(uint a) { if (a > 0) _; }
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (34-35): Undeclared identifier.
|
||||
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract B {
|
||||
function f() mod(x) pure public { uint x = 7; }
|
||||
modifier mod(uint a) { if (a > 0) _; }
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (64-65): Undeclared identifier.
|
||||
+1
-3
@@ -1,5 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
|
||||
contract C {
|
||||
function f() internal {
|
||||
{
|
||||
@@ -9,4 +7,4 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (130-131): Undeclared identifier.
|
||||
// DeclarationError: (99-100): Undeclared identifier.
|
||||
|
||||
+3
-5
@@ -1,5 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
|
||||
contract C {
|
||||
function f() internal {
|
||||
{
|
||||
@@ -8,6 +6,6 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (110-111): Undeclared identifier. Did you mean "a"?
|
||||
// DeclarationError: (113-114): Undeclared identifier. Did you mean "b"?
|
||||
// DeclarationError: (116-117): Undeclared identifier. Did you mean "c"?
|
||||
// DeclarationError: (79-80): Undeclared identifier. "a" is not (or not yet) visible at this point.
|
||||
// DeclarationError: (82-83): Undeclared identifier. "b" is not (or not yet) visible at this point.
|
||||
// DeclarationError: (85-86): Undeclared identifier. "c" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -3,4 +3,4 @@ contract c {
|
||||
function g() public { f(); }
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (68-69): Undeclared identifier. Did you mean "f"?
|
||||
// DeclarationError: (68-69): Undeclared identifier. "f" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
contract C {
|
||||
function f() pure public {
|
||||
a = 7;
|
||||
uint a;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
contract A {
|
||||
function f() {
|
||||
function f() public pure {
|
||||
uint y = 1;
|
||||
uint x = 3 < 0 ? x = 3 : 6;
|
||||
uint x = 3 < 0 ? y = 3 : 6;
|
||||
true ? x = 3 : 4;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (17-119): No visibility specified. Defaulting to "public".
|
||||
// Warning: (40-46): Unused local variable.
|
||||
// Warning: (17-119): Function state mutability can be restricted to pure
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
contract test {
|
||||
function fun(uint256 a) {
|
||||
while (true) { uint256 x = 1; break; continue; } x = 9;
|
||||
function fun() public pure {
|
||||
uint256 x;
|
||||
while (true) { x = 1; break; continue; } x = 9;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (20-115): No visibility specified. Defaulting to "public".
|
||||
// Warning: (33-42): Unused function parameter. Remove or comment out the variable name to silence this warning.
|
||||
// Warning: (20-115): Function state mutability can be restricted to pure
|
||||
|
||||
@@ -5,4 +5,5 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (77-83): Identifier already declared.
|
||||
// Warning: (57-63): Unused local variable.
|
||||
// Warning: (77-83): Unused local variable.
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
{ uint x; }
|
||||
{ uint x; }
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (87-93): Unused local variable.
|
||||
// Warning: (107-113): Unused local variable.
|
||||
+2
-1
@@ -5,4 +5,5 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (75-81): Identifier already declared.
|
||||
// Warning: (57-63): Unused local variable.
|
||||
// Warning: (75-81): Unused local variable.
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
{ uint x; }
|
||||
uint x;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (87-93): Unused local variable.
|
||||
// Warning: (105-111): Unused local variable.
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() public {
|
||||
{
|
||||
@@ -8,4 +7,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (123-124): Undeclared identifier.
|
||||
// DeclarationError: (93-94): Undeclared identifier.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
x = 3;
|
||||
@@ -6,4 +5,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (85-86): Undeclared identifier. Did you mean "x"?
|
||||
// DeclarationError: (55-56): Undeclared identifier. "x" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -4,3 +4,5 @@ contract test {
|
||||
uint x;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (55-56): Undeclared identifier. "x" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
for (uint x = 0; x < 10; x ++){
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
for (uint x = 0; x < 10; x ++)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
for (uint x = 0; x < 10; x ++){
|
||||
@@ -8,4 +7,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (154-155): Undeclared identifier.
|
||||
// DeclarationError: (124-125): Undeclared identifier.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
for (;; y++){
|
||||
@@ -7,4 +6,4 @@ contract test {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (93-94): Undeclared identifier.
|
||||
// DeclarationError: (63-64): Undeclared identifier.
|
||||
|
||||
@@ -4,3 +4,5 @@ contract test {
|
||||
uint256 x = 2;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (55-56): Undeclared identifier. "x" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -3,3 +3,5 @@ contract test {
|
||||
uint a = a;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (64-65): Undeclared identifier. "a" is not (or not yet) visible at this point.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
pragma experimental "v0.5.0";
|
||||
contract test {
|
||||
function f() pure public {
|
||||
uint a = a;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (94-95): Undeclared identifier. Did you mean "a"?
|
||||
Reference in New Issue
Block a user