mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
@@ -23,13 +23,8 @@ contract C {
|
||||
}
|
||||
function k() internal view returns (S storage c) {
|
||||
do {
|
||||
if (s.f) {
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
c = s;
|
||||
}
|
||||
c = s;
|
||||
continue;
|
||||
} while(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,15 @@ contract C {
|
||||
do {
|
||||
if (s.f) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
c = s;
|
||||
}
|
||||
} while(false);
|
||||
}
|
||||
function i() internal view returns (S storage c) {
|
||||
do {
|
||||
if (s.f) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
@@ -28,8 +37,16 @@ contract C {
|
||||
}
|
||||
} while(false);
|
||||
}
|
||||
function j() internal view returns (S storage c) {
|
||||
do {
|
||||
continue;
|
||||
c = s;
|
||||
} while(false);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (87-98): This variable is of storage pointer type and might be returned without assignment. This can cause storage corruption. Assign the variable (potentially from itself) to remove this warning.
|
||||
// Warning: (223-234): This variable is of storage pointer type and might be returned without assignment. This can cause storage corruption. Assign the variable (potentially from itself) to remove this warning.
|
||||
// Warning: (440-451): This variable is of storage pointer type and might be returned without assignment. This can cause storage corruption. Assign the variable (potentially from itself) to remove this warning.
|
||||
// Warning: (654-665): This variable is of storage pointer type and might be returned without assignment. This can cause storage corruption. Assign the variable (potentially from itself) to remove this warning.
|
||||
// Warning: (871-882): This variable is of storage pointer type and might be returned without assignment. This can cause storage corruption. Assign the variable (potentially from itself) to remove this warning.
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
contract C {
|
||||
function f(bool a, bool b) public pure {
|
||||
bool c;
|
||||
// OK
|
||||
c = !a;
|
||||
c = !b;
|
||||
c = a == b;
|
||||
c = a != b;
|
||||
c = a || b;
|
||||
c = a && b;
|
||||
|
||||
// Not OK
|
||||
c = a > b;
|
||||
c = a < b;
|
||||
c = a >= b;
|
||||
c = a <= b;
|
||||
c = a & b;
|
||||
c = a | b;
|
||||
c = a ^ b;
|
||||
c = ~a;
|
||||
c = ~b;
|
||||
c = a + b;
|
||||
c = a - b;
|
||||
c = -a;
|
||||
c = -b;
|
||||
c = a * b;
|
||||
c = a / b;
|
||||
c = a ** b;
|
||||
c = a % b;
|
||||
c = a << b;
|
||||
c = a >> b;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (231-236): Operator > not compatible with types bool and bool
|
||||
// TypeError: (250-255): Operator < not compatible with types bool and bool
|
||||
// TypeError: (269-275): Operator >= not compatible with types bool and bool
|
||||
// TypeError: (289-295): Operator <= not compatible with types bool and bool
|
||||
// TypeError: (309-314): Operator & not compatible with types bool and bool
|
||||
// TypeError: (328-333): Operator | not compatible with types bool and bool
|
||||
// TypeError: (347-352): Operator ^ not compatible with types bool and bool
|
||||
// TypeError: (366-368): Unary operator ~ cannot be applied to type bool
|
||||
// TypeError: (382-384): Unary operator ~ cannot be applied to type bool
|
||||
// TypeError: (398-403): Operator + not compatible with types bool and bool
|
||||
// TypeError: (417-422): Operator - not compatible with types bool and bool
|
||||
// TypeError: (436-438): Unary operator - cannot be applied to type bool
|
||||
// TypeError: (452-454): Unary operator - cannot be applied to type bool
|
||||
// TypeError: (468-473): Operator * not compatible with types bool and bool
|
||||
// TypeError: (487-492): Operator / not compatible with types bool and bool
|
||||
// TypeError: (506-512): Operator ** not compatible with types bool and bool
|
||||
// TypeError: (526-531): Operator % not compatible with types bool and bool
|
||||
// TypeError: (545-551): Operator << not compatible with types bool and bool
|
||||
// TypeError: (565-571): Operator >> not compatible with types bool and bool
|
||||
@@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure returns(uint256) {
|
||||
return uint256(bytes1(''));
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (76-95): Explicit type conversion not allowed from "bytes1" to "uint256".
|
||||
@@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure returns(uint32) {
|
||||
return uint32(bytes32(''));
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (75-94): Explicit type conversion not allowed from "bytes32" to "uint32".
|
||||
@@ -1,7 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
C(bytes20(0x1234));
|
||||
C(bytes20(uint160(0x1234)));
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (64-82): Explicit type conversion not allowed from "bytes20" to "contract C".
|
||||
// TypeError: (64-91): Explicit type conversion not allowed from "bytes20" to "contract C".
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
contract C {
|
||||
function f() public pure returns (uint256) {
|
||||
return uint256(bytes32(uint256(0)));
|
||||
}
|
||||
function g() public pure returns (uint128) {
|
||||
return uint128(bytes16(uint128(0)));
|
||||
}
|
||||
function h() public pure returns (uint64) {
|
||||
return uint64(bytes8(uint64(0)));
|
||||
}
|
||||
function i() public pure returns (uint32) {
|
||||
return uint32(bytes4(uint32(0)));
|
||||
}
|
||||
function j() public pure returns (uint16) {
|
||||
return uint16(bytes2(uint16(0)));
|
||||
}
|
||||
function k() public pure returns (uint8) {
|
||||
return uint8(bytes1(uint8(0)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
contract C {
|
||||
bytes20 x;
|
||||
function f(bytes16 b) public view {
|
||||
b[uint8(x[2])];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure returns(bytes1) {
|
||||
return bytes1(uint256(0));
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (75-93): Explicit type conversion not allowed from "uint256" to "bytes1".
|
||||
@@ -0,0 +1,7 @@
|
||||
contract C {
|
||||
function f() public pure returns(bytes32) {
|
||||
return bytes32(uint32(0));
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (76-94): Explicit type conversion not allowed from "uint32" to "bytes32".
|
||||
Reference in New Issue
Block a user