mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'origin/develop' into HEAD
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
======= evm_to_wasm/input.sol (Ewasm) =======
|
||||
======= evm_to_wasm/input.yul (Ewasm) =======
|
||||
|
||||
Pretty printed source:
|
||||
object "object" {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
======= evm_to_wasm_break/input.sol (Ewasm) =======
|
||||
======= evm_to_wasm_break/input.yul (Ewasm) =======
|
||||
|
||||
Pretty printed source:
|
||||
object "object" {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
--model-checker-timeout 1000
|
||||
@@ -0,0 +1,12 @@
|
||||
Warning: CHC: Assertion violation might happen here.
|
||||
--> model_checker_timeout_all/input.sol:10:3:
|
||||
|
|
||||
10 | assert(r % k == 0);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Warning: BMC: Assertion violation might happen here.
|
||||
--> model_checker_timeout_all/input.sol:10:3:
|
||||
|
|
||||
10 | assert(r % k == 0);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
Note:
|
||||
@@ -0,0 +1,12 @@
|
||||
// SPDX-License-Identifier: GPL-3.0
|
||||
pragma solidity >=0.0;
|
||||
pragma experimental SMTChecker;
|
||||
contract test {
|
||||
function f(uint x, uint y, uint k) public pure {
|
||||
require(k > 0);
|
||||
require(x % k == 0);
|
||||
require(y % k == 0);
|
||||
uint r = mulmod(x, y, k);
|
||||
assert(r % k == 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
--model-checker-engine bmc --model-checker-timeout 1000
|
||||
@@ -0,0 +1,6 @@
|
||||
Warning: BMC: Assertion violation might happen here.
|
||||
--> model_checker_timeout_bmc/input.sol:10:3:
|
||||
|
|
||||
10 | assert(r % k == 0);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
Note:
|
||||
@@ -0,0 +1,12 @@
|
||||
// SPDX-License-Identifier: GPL-3.0
|
||||
pragma solidity >=0.0;
|
||||
pragma experimental SMTChecker;
|
||||
contract test {
|
||||
function f(uint x, uint y, uint k) public pure {
|
||||
require(k > 0);
|
||||
require(x % k == 0);
|
||||
require(y % k == 0);
|
||||
uint r = mulmod(x, y, k);
|
||||
assert(r % k == 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
--model-checker-engine chc --model-checker-timeout 1000
|
||||
@@ -0,0 +1,5 @@
|
||||
Warning: CHC: Assertion violation might happen here.
|
||||
--> model_checker_timeout_chc/input.sol:10:3:
|
||||
|
|
||||
10 | assert(r % k == 0);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
@@ -0,0 +1,12 @@
|
||||
// SPDX-License-Identifier: GPL-3.0
|
||||
pragma solidity >=0.0;
|
||||
pragma experimental SMTChecker;
|
||||
contract test {
|
||||
function f(uint x, uint y, uint k) public pure {
|
||||
require(k > 0);
|
||||
require(x % k == 0);
|
||||
require(y % k == 0);
|
||||
uint r = mulmod(x, y, k);
|
||||
assert(r % k == 0);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
======= object_compiler/input.sol (EVM) =======
|
||||
======= object_compiler/input.yul (EVM) =======
|
||||
|
||||
Pretty printed source:
|
||||
object "MyContract" {
|
||||
@@ -26,42 +26,42 @@ Binary representation:
|
||||
33600055600b806012600039806000f350fe60005460005260206000f3
|
||||
|
||||
Text representation:
|
||||
/* "object_compiler/input.sol":128:136 */
|
||||
/* "object_compiler/input.yul":128:136 */
|
||||
caller
|
||||
/* "object_compiler/input.sol":125:126 */
|
||||
/* "object_compiler/input.yul":125:126 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":118:137 */
|
||||
/* "object_compiler/input.yul":118:137 */
|
||||
sstore
|
||||
dataSize(sub_0)
|
||||
/* "object_compiler/input.sol":240:259 */
|
||||
/* "object_compiler/input.yul":240:259 */
|
||||
dup1
|
||||
dataOffset(sub_0)
|
||||
/* "object_compiler/input.sol":125:126 */
|
||||
/* "object_compiler/input.yul":125:126 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":205:260 */
|
||||
/* "object_compiler/input.yul":205:260 */
|
||||
codecopy
|
||||
/* "object_compiler/input.sol":275:294 */
|
||||
/* "object_compiler/input.yul":275:294 */
|
||||
dup1
|
||||
/* "object_compiler/input.sol":125:126 */
|
||||
/* "object_compiler/input.yul":125:126 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":265:295 */
|
||||
/* "object_compiler/input.yul":265:295 */
|
||||
return
|
||||
pop
|
||||
stop
|
||||
|
||||
sub_0: assembly {
|
||||
/* "object_compiler/input.sol":397:398 */
|
||||
/* "object_compiler/input.yul":397:398 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":391:399 */
|
||||
/* "object_compiler/input.yul":391:399 */
|
||||
sload
|
||||
/* "object_compiler/input.sol":397:398 */
|
||||
/* "object_compiler/input.yul":397:398 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":381:400 */
|
||||
/* "object_compiler/input.yul":381:400 */
|
||||
mstore
|
||||
/* "object_compiler/input.sol":417:421 */
|
||||
/* "object_compiler/input.yul":417:421 */
|
||||
0x20
|
||||
/* "object_compiler/input.sol":397:398 */
|
||||
/* "object_compiler/input.yul":397:398 */
|
||||
0x00
|
||||
/* "object_compiler/input.sol":407:422 */
|
||||
/* "object_compiler/input.yul":407:422 */
|
||||
return
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources":
|
||||
{
|
||||
"A":
|
||||
{
|
||||
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.0;\npragma experimental SMTChecker;\ncontract test {\nfunction f(uint x, uint y, uint k) public pure {\nrequire(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}"
|
||||
}
|
||||
},
|
||||
"modelCheckerSettings":
|
||||
{
|
||||
"timeout": 1000
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,250 @@
|
||||
{"auxiliaryInputRequested":{"smtlib2queries":{"0x0ab92bf00d2546a23d94ff3a406d009299b43650e321d35e02531726df040b9d":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_15_0| () Int)
|
||||
(declare-fun |r_div_mod_15_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_15_0)) (and (and (<= 0 r_div_mod_15_0) (or (= expr_19_0 0) (< r_div_mod_15_0 expr_19_0))) (and (= (+ (* d_div_mod_15_0 expr_19_0) r_div_mod_15_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))) expr_22_1))
|
||||
(check-sat)
|
||||
","0x34467f46a484d40c850f05c3b05b0817a859573bc546982aeab4a17f9259fb5b":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))) (not expr_14_1)))
|
||||
(check-sat)
|
||||
","0x3dd3d755e279cd0bf414fd3fd9830517ee2397e3931ec76a9fd970b5eec46384":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_15_0| () Int)
|
||||
(declare-fun |r_div_mod_15_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_16_0| () Int)
|
||||
(declare-fun |r_div_mod_16_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_17_0| () Int)
|
||||
(declare-fun |r_div_mod_17_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_18_0| () Int)
|
||||
(declare-fun |r_div_mod_18_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_46_1 (= expr_44_1 expr_45_0)) (and (= expr_45_0 0) (and (= expr_44_1 (ite (= expr_43_0 0) 0 r_div_mod_18_0)) (and (and (<= 0 r_div_mod_18_0) (or (= expr_43_0 0) (< r_div_mod_18_0 expr_43_0))) (and (= (+ (* d_div_mod_18_0 expr_43_0) r_div_mod_18_0) expr_42_0) (and (= expr_43_0 k_8_0) (and (= expr_42_0 r_34_1) (and (= r_34_1 expr_39_1) (and (= expr_39_1 (ite (= expr_38_0 0) 0 r_div_mod_17_0)) (and (and (<= 0 r_div_mod_17_0) (or (= expr_38_0 0) (< r_div_mod_17_0 expr_38_0))) (and (= (+ (* d_div_mod_17_0 expr_38_0) r_div_mod_17_0) (* expr_36_0 expr_37_0)) (and (= expr_38_0 k_8_0) (and (= expr_37_0 y_6_0) (and (= expr_36_0 x_4_0) (and true (and (implies true expr_30_1) (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_16_0)) (and (and (<= 0 r_div_mod_16_0) (or (= expr_27_0 0) (< r_div_mod_16_0 expr_27_0))) (and (= (+ (* d_div_mod_16_0 expr_27_0) r_div_mod_16_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_15_0)) (and (and (<= 0 r_div_mod_15_0) (or (= expr_19_0 0) (< r_div_mod_15_0 expr_19_0))) (and (= (+ (* d_div_mod_15_0 expr_19_0) r_div_mod_15_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))))))))))))))))))) (not expr_46_1)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_1))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| ))
|
||||
","0x4b82600501b4619c19bf57eb8d3cdb69f1c0d2a807d5908f1503d07e65ce2fd6":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_15_0| () Int)
|
||||
(declare-fun |r_div_mod_15_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_16_0| () Int)
|
||||
(declare-fun |r_div_mod_16_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_16_0)) (and (and (<= 0 r_div_mod_16_0) (or (= expr_27_0 0) (< r_div_mod_16_0 expr_27_0))) (and (= (+ (* d_div_mod_16_0 expr_27_0) r_div_mod_16_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_15_0)) (and (and (<= 0 r_div_mod_15_0) (or (= expr_19_0 0) (< r_div_mod_15_0 expr_19_0))) (and (= (+ (* d_div_mod_15_0 expr_19_0) r_div_mod_15_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))) expr_30_1))
|
||||
(check-sat)
|
||||
","0x5d4ad2f9c711b9e187dba2577e849272617d56d0ba3d46427baa3c11804a9143":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_15_0| () Int)
|
||||
(declare-fun |r_div_mod_15_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_15_0)) (and (and (<= 0 r_div_mod_15_0) (or (= expr_19_0 0) (< r_div_mod_15_0 expr_19_0))) (and (= (+ (* d_div_mod_15_0 expr_19_0) r_div_mod_15_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))) (not expr_22_1)))
|
||||
(check-sat)
|
||||
","0xd63dd6c8c7f21f7200de074c7131ab703fcb783425bc609ee7541efc2fc320bf":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_15_0| () Int)
|
||||
(declare-fun |r_div_mod_15_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_16_0| () Int)
|
||||
(declare-fun |r_div_mod_16_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_16_0)) (and (and (<= 0 r_div_mod_16_0) (or (= expr_27_0 0) (< r_div_mod_16_0 expr_27_0))) (and (= (+ (* d_div_mod_16_0 expr_27_0) r_div_mod_16_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_15_0)) (and (and (<= 0 r_div_mod_15_0) (or (= expr_19_0 0) (< r_div_mod_15_0 expr_19_0))) (and (= (+ (* d_div_mod_15_0 expr_19_0) r_div_mod_15_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))) (not expr_30_1)))
|
||||
(check-sat)
|
||||
","0xee7d96e23195f6aeb74a805122639dcd6a8932788ceeae3cba711aba9050a0b7":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))) expr_14_1))
|
||||
(check-sat)
|
||||
"}},"errors":[{"component":"general","errorCode":"6328","formattedMessage":"A:6:85: Warning: CHC: Assertion violation might happen here.
|
||||
require(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}
|
||||
^----------------^
|
||||
","message":"CHC: Assertion violation might happen here.","severity":"warning","sourceLocation":{"end":258,"file":"A","start":240},"type":"Warning"},{"component":"general","errorCode":"7812","formattedMessage":"A:6:85: Warning: BMC: Assertion violation might happen here.
|
||||
require(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}
|
||||
^----------------^
|
||||
|
||||
","message":"BMC: Assertion violation might happen here.","secondarySourceLocations":[{"message":""}],"severity":"warning","sourceLocation":{"end":258,"file":"A","start":240},"type":"Warning"}],"sources":{"A":{"id":0}}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources":
|
||||
{
|
||||
"A":
|
||||
{
|
||||
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.0;\npragma experimental SMTChecker;\ncontract test {\nfunction f(uint x, uint y, uint k) public pure {\nrequire(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}"
|
||||
}
|
||||
},
|
||||
"modelCheckerSettings":
|
||||
{
|
||||
"engine": "bmc",
|
||||
"timeout": 1000
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,503 @@
|
||||
{"auxiliaryInputRequested":{"smtlib2queries":{"0x0f5149c7799751d1575c0946ca73f9a1a9dbc6c432db3c5e13625bd301d7fd37":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_1_0)) (and (and (<= 0 r_div_mod_1_0) (or (= expr_27_0 0) (< r_div_mod_1_0 expr_27_0))) (and (= (+ (* d_div_mod_1_0 expr_27_0) r_div_mod_1_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))) expr_30_1))
|
||||
(check-sat)
|
||||
","0x11444b207b7d8827f8b7503cad8aed1426a8727290a070d1eed04a55e85e2f14":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_1_0)) (and (and (<= 0 r_div_mod_1_0) (or (= expr_27_0 0) (< r_div_mod_1_0 expr_27_0))) (and (= (+ (* d_div_mod_1_0 expr_27_0) r_div_mod_1_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))) (not expr_30_1)))
|
||||
(check-sat)
|
||||
","0x317d72a016f7a5ff016cda82e96601cfac3a0498f393852410c7ce335d4896c8":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_2_0| () Int)
|
||||
(declare-fun |r_div_mod_2_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_3_0| () Int)
|
||||
(declare-fun |r_div_mod_3_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_43_0 k_8_0) (and (= expr_42_0 r_34_1) (and (= r_34_1 expr_39_1) (and (= expr_39_1 (ite (= expr_38_0 0) 0 r_div_mod_2_0)) (and (and (<= 0 r_div_mod_2_0) (or (= expr_38_0 0) (< r_div_mod_2_0 expr_38_0))) (and (= (+ (* d_div_mod_2_0 expr_38_0) r_div_mod_2_0) (* expr_36_0 expr_37_0)) (and (= expr_38_0 k_8_0) (and (= expr_37_0 y_6_0) (and (= expr_36_0 x_4_0) (and true (and (implies true expr_30_1) (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_1_0)) (and (and (<= 0 r_div_mod_1_0) (or (= expr_27_0 0) (< r_div_mod_1_0 expr_27_0))) (and (= (+ (* d_div_mod_1_0 expr_27_0) r_div_mod_1_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true))))))))))))))))))))))))))))))))))) (= expr_43_0 0)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_1))
|
||||
(declare-const |EVALEXPR_4| Int)
|
||||
(assert (= |EVALEXPR_4| expr_43_0))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| |EVALEXPR_4| ))
|
||||
","0x34467f46a484d40c850f05c3b05b0817a859573bc546982aeab4a17f9259fb5b":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))) (not expr_14_1)))
|
||||
(check-sat)
|
||||
","0x46b3448dbd021b48635faf7ba42511a38684819cde3808197301d93fa7b482ea":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))) (not expr_22_1)))
|
||||
(check-sat)
|
||||
","0x6929232f73f56b073cf47977f8ce4ce5c728e02e72812041b60b544333443c3c":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_2_0| () Int)
|
||||
(declare-fun |r_div_mod_2_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_3_0| () Int)
|
||||
(declare-fun |r_div_mod_3_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_46_1 (= expr_44_1 expr_45_0)) (and (= expr_45_0 0) (and (= expr_44_1 (ite (= expr_43_0 0) 0 r_div_mod_3_0)) (and (and (<= 0 r_div_mod_3_0) (or (= expr_43_0 0) (< r_div_mod_3_0 expr_43_0))) (and (= (+ (* d_div_mod_3_0 expr_43_0) r_div_mod_3_0) expr_42_0) (and (= expr_43_0 k_8_0) (and (= expr_42_0 r_34_1) (and (= r_34_1 expr_39_1) (and (= expr_39_1 (ite (= expr_38_0 0) 0 r_div_mod_2_0)) (and (and (<= 0 r_div_mod_2_0) (or (= expr_38_0 0) (< r_div_mod_2_0 expr_38_0))) (and (= (+ (* d_div_mod_2_0 expr_38_0) r_div_mod_2_0) (* expr_36_0 expr_37_0)) (and (= expr_38_0 k_8_0) (and (= expr_37_0 y_6_0) (and (= expr_36_0 x_4_0) (and true (and (implies true expr_30_1) (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_1_0)) (and (and (<= 0 r_div_mod_1_0) (or (= expr_27_0 0) (< r_div_mod_1_0 expr_27_0))) (and (= (+ (* d_div_mod_1_0 expr_27_0) r_div_mod_1_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))))))))))))))))))))))))))) (not expr_46_1)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_1))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| ))
|
||||
","0x7d43d079635c11d55bba40ba4b7f9c9beeef336e19e5612f020ab7547affbf54":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))))))))))) expr_22_1))
|
||||
(check-sat)
|
||||
","0x94d4c42b833aeec4b7c67fb46410594966e252d7ca8bf44e5687142a078842b2":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_2_0| () Int)
|
||||
(declare-fun |r_div_mod_2_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_3_0| () Int)
|
||||
(declare-fun |r_div_mod_3_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_38_0 k_8_0) (and (= expr_37_0 y_6_0) (and (= expr_36_0 x_4_0) (and true (and (implies true expr_30_1) (and (= expr_30_1 (= expr_28_1 expr_29_0)) (and (= expr_29_0 0) (and (= expr_28_1 (ite (= expr_27_0 0) 0 r_div_mod_1_0)) (and (and (<= 0 r_div_mod_1_0) (or (= expr_27_0 0) (< r_div_mod_1_0 expr_27_0))) (and (= (+ (* d_div_mod_1_0 expr_27_0) r_div_mod_1_0) expr_26_0) (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true))))))))))))))))))))))))))))) (= expr_38_0 0)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_0))
|
||||
(declare-const |EVALEXPR_4| Int)
|
||||
(assert (= |EVALEXPR_4| expr_38_0))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| |EVALEXPR_4| ))
|
||||
","0x9ccee337d79bf0618f658506fca4179eacaee0de28aebc060fce24a9a2cb21fc":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_2_0| () Int)
|
||||
(declare-fun |r_div_mod_2_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_3_0| () Int)
|
||||
(declare-fun |r_div_mod_3_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_27_0 k_8_0) (and (= expr_26_0 y_6_0) (and (implies true expr_22_1) (and (= expr_22_1 (= expr_20_1 expr_21_0)) (and (= expr_21_0 0) (and (= expr_20_1 (ite (= expr_19_0 0) 0 r_div_mod_0_0)) (and (and (<= 0 r_div_mod_0_0) (or (= expr_19_0 0) (< r_div_mod_0_0 expr_19_0))) (and (= (+ (* d_div_mod_0_0 expr_19_0) r_div_mod_0_0) expr_18_0) (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true))))))))))))))))))) (= expr_27_0 0)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_0))
|
||||
(declare-const |EVALEXPR_4| Int)
|
||||
(assert (= |EVALEXPR_4| expr_27_0))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| |EVALEXPR_4| ))
|
||||
","0xc087609e1dc5e5b58588a60985e4e04dbb5b602e92873c2123a018895f5f9e1a":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
(declare-fun |expr_18_0| () Int)
|
||||
(declare-fun |expr_19_0| () Int)
|
||||
(declare-fun |d_div_mod_0_0| () Int)
|
||||
(declare-fun |r_div_mod_0_0| () Int)
|
||||
(declare-fun |expr_20_1| () Int)
|
||||
(declare-fun |expr_21_0| () Int)
|
||||
(declare-fun |expr_22_1| () Bool)
|
||||
(declare-fun |expr_26_0| () Int)
|
||||
(declare-fun |expr_27_0| () Int)
|
||||
(declare-fun |d_div_mod_1_0| () Int)
|
||||
(declare-fun |r_div_mod_1_0| () Int)
|
||||
(declare-fun |expr_28_1| () Int)
|
||||
(declare-fun |expr_29_0| () Int)
|
||||
(declare-fun |expr_30_1| () Bool)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_0| (Int Int Int ) Int)
|
||||
(declare-fun |t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_abstract_0| () Int)
|
||||
(declare-fun |expr_36_0| () Int)
|
||||
(declare-fun |expr_37_0| () Int)
|
||||
(declare-fun |expr_38_0| () Int)
|
||||
(declare-fun |d_div_mod_2_0| () Int)
|
||||
(declare-fun |r_div_mod_2_0| () Int)
|
||||
(declare-fun |expr_39_1| () Int)
|
||||
(declare-fun |r_34_1| () Int)
|
||||
(declare-fun |expr_42_0| () Int)
|
||||
(declare-fun |expr_43_0| () Int)
|
||||
(declare-fun |d_div_mod_3_0| () Int)
|
||||
(declare-fun |r_div_mod_3_0| () Int)
|
||||
(declare-fun |expr_44_1| () Int)
|
||||
(declare-fun |expr_45_0| () Int)
|
||||
(declare-fun |expr_46_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_19_0 k_8_0) (and (= expr_18_0 x_4_0) (and (implies true expr_14_1) (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true))))))))))) (= expr_19_0 0)))
|
||||
(declare-const |EVALEXPR_0| Int)
|
||||
(assert (= |EVALEXPR_0| x_4_0))
|
||||
(declare-const |EVALEXPR_1| Int)
|
||||
(assert (= |EVALEXPR_1| y_6_0))
|
||||
(declare-const |EVALEXPR_2| Int)
|
||||
(assert (= |EVALEXPR_2| k_8_0))
|
||||
(declare-const |EVALEXPR_3| Int)
|
||||
(assert (= |EVALEXPR_3| r_34_0))
|
||||
(declare-const |EVALEXPR_4| Int)
|
||||
(assert (= |EVALEXPR_4| expr_19_0))
|
||||
(check-sat)
|
||||
(get-value (|EVALEXPR_0| |EVALEXPR_1| |EVALEXPR_2| |EVALEXPR_3| |EVALEXPR_4| ))
|
||||
","0xee7d96e23195f6aeb74a805122639dcd6a8932788ceeae3cba711aba9050a0b7":"(set-option :produce-models true)
|
||||
(set-option :timeout 1000)
|
||||
(set-logic ALL)
|
||||
(declare-fun |error_0| () Int)
|
||||
(declare-fun |this_0| () Int)
|
||||
(declare-datatypes ((|state_type| 0)) (((|state_type| (|balances| (Array Int Int))))))
|
||||
(declare-fun |state_0| () |state_type|)
|
||||
(declare-datatypes ((|bytes_tuple| 0)) (((|bytes_tuple| (|bytes_tuple_accessor_array| (Array Int Int)) (|bytes_tuple_accessor_length| Int)))))
|
||||
(declare-datatypes ((|tx_type| 0)) (((|tx_type| (|block.coinbase| Int) (|block.difficulty| Int) (|block.gaslimit| Int) (|block.number| Int) (|block.timestamp| Int) (|blockhash| (Array Int Int)) (|msg.data| |bytes_tuple|) (|msg.sender| Int) (|msg.sig| Int) (|msg.value| Int) (|tx.gasprice| Int) (|tx.origin| Int)))))
|
||||
(declare-fun |tx_0| () |tx_type|)
|
||||
(declare-datatypes ((|ecrecover_input_type| 0)) (((|ecrecover_input_type| (|hash| Int) (|v| Int) (|r| Int) (|s| Int)))))
|
||||
(declare-datatypes ((|crypto_type| 0)) (((|crypto_type| (|ecrecover| (Array |ecrecover_input_type| Int)) (|keccak256| (Array |bytes_tuple| Int)) (|ripemd160| (Array |bytes_tuple| Int)) (|sha256| (Array |bytes_tuple| Int))))))
|
||||
(declare-fun |crypto_0| () |crypto_type|)
|
||||
(declare-fun |x_4_0| () Int)
|
||||
(declare-fun |y_6_0| () Int)
|
||||
(declare-fun |k_8_0| () Int)
|
||||
(declare-fun |r_34_0| () Int)
|
||||
(declare-fun |expr_12_0| () Int)
|
||||
(declare-fun |expr_13_0| () Int)
|
||||
(declare-fun |expr_14_1| () Bool)
|
||||
|
||||
(assert (and (and true (and (= expr_14_1 (> expr_12_0 expr_13_0)) (and (= expr_13_0 0) (and (= expr_12_0 k_8_0) (and (and (>= k_8_0 0) (<= k_8_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= y_6_0 0) (<= y_6_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (and (>= x_4_0 0) (<= x_4_0 115792089237316195423570985008687907853269984665640564039457584007913129639935)) (and (= r_34_0 0) true)))))))) expr_14_1))
|
||||
(check-sat)
|
||||
"}},"errors":[{"component":"general","errorCode":"7812","formattedMessage":"A:6:85: Warning: BMC: Assertion violation might happen here.
|
||||
require(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}
|
||||
^----------------^
|
||||
|
||||
","message":"BMC: Assertion violation might happen here.","secondarySourceLocations":[{"message":""}],"severity":"warning","sourceLocation":{"end":258,"file":"A","start":240},"type":"Warning"}],"sources":{"A":{"id":0}}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources":
|
||||
{
|
||||
"A":
|
||||
{
|
||||
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.0;\npragma experimental SMTChecker;\ncontract test {\nfunction f(uint x, uint y, uint k) public pure {\nrequire(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}"
|
||||
}
|
||||
},
|
||||
"modelCheckerSettings":
|
||||
{
|
||||
"engine": "chc",
|
||||
"timeout": 1000
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{"errors":[{"component":"general","errorCode":"6328","formattedMessage":"A:6:85: Warning: CHC: Assertion violation might happen here.
|
||||
require(k > 0); require(x % k == 0); require(y % k == 0); uint r = mulmod(x, y, k); assert(r % k == 0);}}
|
||||
^----------------^
|
||||
","message":"CHC: Assertion violation might happen here.","severity":"warning","sourceLocation":{"end":258,"file":"A","start":240},"type":"Warning"}],"sources":{"A":{"id":0}}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources":
|
||||
{
|
||||
"A":
|
||||
{
|
||||
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.0;\npragma experimental SMTChecker;\ncontract C { function f(uint x) public pure { assert(x > 0); } }"
|
||||
}
|
||||
},
|
||||
"modelCheckerSettings":
|
||||
{
|
||||
"engine": "chc",
|
||||
"atimeout": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"errors":[{"component":"general","formattedMessage":"Unknown key \"atimeout\"","message":"Unknown key \"atimeout\"","severity":"error","type":"JSONError"}]}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources":
|
||||
{
|
||||
"A":
|
||||
{
|
||||
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.0;\npragma experimental SMTChecker;\ncontract C { function f(uint x) public pure { assert(x > 0); } }"
|
||||
}
|
||||
},
|
||||
"modelCheckerSettings":
|
||||
{
|
||||
"timeout": "asd"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"errors":[{"component":"general","formattedMessage":"modelCheckerSettings.timeout must be an unsigned integer.","message":"modelCheckerSettings.timeout must be an unsigned integer.","severity":"error","type":"JSONError"}]}
|
||||
@@ -1,6 +1,6 @@
|
||||
Warning: Yul is still experimental. Please use the output with care.
|
||||
Error: Function not found.
|
||||
--> strict_asm_jump/input.sol:1:3:
|
||||
--> strict_asm_jump/input.yul:1:3:
|
||||
|
|
||||
1 | { jump(1) }
|
||||
| ^^^^
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
======= yul_stack_opt/input.sol (EVM) =======
|
||||
======= yul_stack_opt/input.yul (EVM) =======
|
||||
|
||||
Pretty printed source:
|
||||
object "object" {
|
||||
@@ -42,164 +42,164 @@ Binary representation:
|
||||
6001808155806002558060035580600455806005558060065580600755806008558060095580600a5580600b5580600c5580600d55808155806002558060035580600455806005558060065580600755806008558060095580600a5580600b5580600c5580600d5580815550
|
||||
|
||||
Text representation:
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
0x01
|
||||
dup1
|
||||
dup2
|
||||
/* "yul_stack_opt/input.sol":129:141 */
|
||||
/* "yul_stack_opt/input.yul":129:141 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":151:160 */
|
||||
/* "yul_stack_opt/input.yul":151:160 */
|
||||
0x02
|
||||
/* "yul_stack_opt/input.sol":144:164 */
|
||||
/* "yul_stack_opt/input.yul":144:164 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":174:183 */
|
||||
/* "yul_stack_opt/input.yul":174:183 */
|
||||
0x03
|
||||
/* "yul_stack_opt/input.sol":167:187 */
|
||||
/* "yul_stack_opt/input.yul":167:187 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":197:206 */
|
||||
/* "yul_stack_opt/input.yul":197:206 */
|
||||
0x04
|
||||
/* "yul_stack_opt/input.sol":190:210 */
|
||||
/* "yul_stack_opt/input.yul":190:210 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":220:229 */
|
||||
/* "yul_stack_opt/input.yul":220:229 */
|
||||
0x05
|
||||
/* "yul_stack_opt/input.sol":213:233 */
|
||||
/* "yul_stack_opt/input.yul":213:233 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":243:252 */
|
||||
/* "yul_stack_opt/input.yul":243:252 */
|
||||
0x06
|
||||
/* "yul_stack_opt/input.sol":236:256 */
|
||||
/* "yul_stack_opt/input.yul":236:256 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":266:275 */
|
||||
/* "yul_stack_opt/input.yul":266:275 */
|
||||
0x07
|
||||
/* "yul_stack_opt/input.sol":259:279 */
|
||||
/* "yul_stack_opt/input.yul":259:279 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":289:298 */
|
||||
/* "yul_stack_opt/input.yul":289:298 */
|
||||
0x08
|
||||
/* "yul_stack_opt/input.sol":282:302 */
|
||||
/* "yul_stack_opt/input.yul":282:302 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":312:321 */
|
||||
/* "yul_stack_opt/input.yul":312:321 */
|
||||
0x09
|
||||
/* "yul_stack_opt/input.sol":305:325 */
|
||||
/* "yul_stack_opt/input.yul":305:325 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":335:344 */
|
||||
/* "yul_stack_opt/input.yul":335:344 */
|
||||
0x0a
|
||||
/* "yul_stack_opt/input.sol":328:348 */
|
||||
/* "yul_stack_opt/input.yul":328:348 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":358:368 */
|
||||
/* "yul_stack_opt/input.yul":358:368 */
|
||||
0x0b
|
||||
/* "yul_stack_opt/input.sol":351:372 */
|
||||
/* "yul_stack_opt/input.yul":351:372 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":382:392 */
|
||||
/* "yul_stack_opt/input.yul":382:392 */
|
||||
0x0c
|
||||
/* "yul_stack_opt/input.sol":375:396 */
|
||||
/* "yul_stack_opt/input.yul":375:396 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":406:416 */
|
||||
/* "yul_stack_opt/input.yul":406:416 */
|
||||
0x0d
|
||||
/* "yul_stack_opt/input.sol":399:420 */
|
||||
/* "yul_stack_opt/input.yul":399:420 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
dup2
|
||||
/* "yul_stack_opt/input.sol":129:141 */
|
||||
/* "yul_stack_opt/input.yul":129:141 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":151:160 */
|
||||
/* "yul_stack_opt/input.yul":151:160 */
|
||||
0x02
|
||||
/* "yul_stack_opt/input.sol":144:164 */
|
||||
/* "yul_stack_opt/input.yul":144:164 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":174:183 */
|
||||
/* "yul_stack_opt/input.yul":174:183 */
|
||||
0x03
|
||||
/* "yul_stack_opt/input.sol":167:187 */
|
||||
/* "yul_stack_opt/input.yul":167:187 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":197:206 */
|
||||
/* "yul_stack_opt/input.yul":197:206 */
|
||||
0x04
|
||||
/* "yul_stack_opt/input.sol":190:210 */
|
||||
/* "yul_stack_opt/input.yul":190:210 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":220:229 */
|
||||
/* "yul_stack_opt/input.yul":220:229 */
|
||||
0x05
|
||||
/* "yul_stack_opt/input.sol":213:233 */
|
||||
/* "yul_stack_opt/input.yul":213:233 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":243:252 */
|
||||
/* "yul_stack_opt/input.yul":243:252 */
|
||||
0x06
|
||||
/* "yul_stack_opt/input.sol":236:256 */
|
||||
/* "yul_stack_opt/input.yul":236:256 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":266:275 */
|
||||
/* "yul_stack_opt/input.yul":266:275 */
|
||||
0x07
|
||||
/* "yul_stack_opt/input.sol":259:279 */
|
||||
/* "yul_stack_opt/input.yul":259:279 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":289:298 */
|
||||
/* "yul_stack_opt/input.yul":289:298 */
|
||||
0x08
|
||||
/* "yul_stack_opt/input.sol":282:302 */
|
||||
/* "yul_stack_opt/input.yul":282:302 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":312:321 */
|
||||
/* "yul_stack_opt/input.yul":312:321 */
|
||||
0x09
|
||||
/* "yul_stack_opt/input.sol":305:325 */
|
||||
/* "yul_stack_opt/input.yul":305:325 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":335:344 */
|
||||
/* "yul_stack_opt/input.yul":335:344 */
|
||||
0x0a
|
||||
/* "yul_stack_opt/input.sol":328:348 */
|
||||
/* "yul_stack_opt/input.yul":328:348 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":358:368 */
|
||||
/* "yul_stack_opt/input.yul":358:368 */
|
||||
0x0b
|
||||
/* "yul_stack_opt/input.sol":351:372 */
|
||||
/* "yul_stack_opt/input.yul":351:372 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":382:392 */
|
||||
/* "yul_stack_opt/input.yul":382:392 */
|
||||
0x0c
|
||||
/* "yul_stack_opt/input.sol":375:396 */
|
||||
/* "yul_stack_opt/input.yul":375:396 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
/* "yul_stack_opt/input.sol":406:416 */
|
||||
/* "yul_stack_opt/input.yul":406:416 */
|
||||
0x0d
|
||||
/* "yul_stack_opt/input.sol":399:420 */
|
||||
/* "yul_stack_opt/input.yul":399:420 */
|
||||
sstore
|
||||
/* "yul_stack_opt/input.sol":98:99 */
|
||||
/* "yul_stack_opt/input.yul":98:99 */
|
||||
dup1
|
||||
dup2
|
||||
/* "yul_stack_opt/input.sol":729:743 */
|
||||
/* "yul_stack_opt/input.yul":729:743 */
|
||||
sstore
|
||||
pop
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
======= yul_stack_opt_disabled/input.sol (EVM) =======
|
||||
======= yul_stack_opt_disabled/input.yul (EVM) =======
|
||||
|
||||
Pretty printed source:
|
||||
object "object" {
|
||||
|
||||
@@ -170,343 +170,7 @@ do { successParse((text), false, false, AssemblyStack::Language::StrictAssembly)
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(SolidityInlineAssembly)
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(Parsing)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(smoke_test)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(surplus_input)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ } { }", ParserError, "Expected end of source but got '{'");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(simple_instructions)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let y := mul(0x10, mul(0x20, mload(0x40)))}"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(selfdestruct)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ selfdestruct(0x02) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(keywords)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ return (byte(1, 2), 2) pop(address()) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(constants)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ pop(mul(7, 8)) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 7 }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_name_clashes)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let x := 1 let x := 2 }", DeclarationError, "Variable name x already taken in this scope.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_multi)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ function f() -> x, y {} let x, y := f() }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_multi_conflict)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ function f() -> x, y {} let x, x := f() }", DeclarationError, "Variable name x already taken in this scope.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_bool)
|
||||
{
|
||||
successParse("{ let x := true }");
|
||||
successParse("{ let x := false }");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_empty)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(functional)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 2 x := add(add(7, mul(6, x)), mul(7, 8)) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(functional_partial)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let x := byte }", ParserError, "Expected '(' but got '}'");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(functional_partial_success)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := byte(1, 2) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(functional_assignment)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 2 x := 7 }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(functional_assignment_complex)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 2 x := add(add(7, mul(6, x)), mul(7, 8)) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(vardecl_complex)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let y := 2 let x := add(add(7, mul(6, y)), mul(7, 8)) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(variable_use_before_decl)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ x := 2 let x := 3 }", DeclarationError, "Variable x used before it was declared.");
|
||||
CHECK_PARSE_ERROR("{ let x := mul(2, x) }", DeclarationError, "Variable x used before it was declared.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(if_statement)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ if 42 {} }"));
|
||||
BOOST_CHECK(successParse("{ if 42 { let x := 3 } }"));
|
||||
BOOST_CHECK(successParse("{ function f() -> x {} if f() { pop(f()) } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(if_statement_scope)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 2 if 42 { x := 3 } }"));
|
||||
CHECK_PARSE_ERROR("{ if 32 { let x := 3 } x := 2 }", DeclarationError, "Variable not found or variable not lvalue.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(if_statement_invalid)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ if mload {} }", ParserError, "Expected '(' but got '{'");
|
||||
BOOST_CHECK("{ if calldatasize() {}");
|
||||
CHECK_PARSE_ERROR("{ if mstore(1, 1) {} }", TypeError, "Expected expression to evaluate to one value, but got 0 values instead.");
|
||||
CHECK_PARSE_ERROR("{ if 32 let x := 3 }", ParserError, "Expected '{' but got reserved keyword 'let'");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_statement)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ switch 42 default {} }"));
|
||||
BOOST_CHECK(successParse("{ switch 42 case 1 {} }"));
|
||||
BOOST_CHECK(successParse("{ switch 42 case 1 {} case 2 {} }"));
|
||||
BOOST_CHECK(successParse("{ switch 42 case 1 {} default {} }"));
|
||||
BOOST_CHECK(successParse("{ switch 42 case 1 {} case 2 {} default {} }"));
|
||||
BOOST_CHECK(successParse("{ switch mul(1, 2) case 1 {} case 2 {} default {} }"));
|
||||
BOOST_CHECK(successParse("{ function f() -> x {} switch f() case 1 {} case 2 {} default {} }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_no_cases)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 }", ParserError, "Switch statement without any cases.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_duplicate_case)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 case 1 {} case 1 {} default {} }", DeclarationError, "Duplicate case defined.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_invalid_expression)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch {} case 1 {} default {} }", ParserError, "Literal or identifier expected.");
|
||||
CHECK_PARSE_ERROR(
|
||||
"{ switch mload case 1 {} default {} }",
|
||||
ParserError,
|
||||
"Expected '(' but got reserved keyword 'case'"
|
||||
);
|
||||
CHECK_PARSE_ERROR(
|
||||
"{ switch mstore(1, 1) case 1 {} default {} }",
|
||||
TypeError,
|
||||
"Expected expression to evaluate to one value, but got 0 values instead."
|
||||
);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_default_before_case)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 default {} case 1 {} }", ParserError, "Case not allowed after default case.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_duplicate_default_case)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 default {} default {} }", ParserError, "Only one default case allowed.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_invalid_case)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 case mul(1, 2) {} case 2 {} default {} }", ParserError, "Literal expected.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_invalid_body)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ switch 42 case 1 mul case 2 {} default {} }", ParserError, "Expected '{' but got identifier");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(for_statement)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ for {} 1 {} {} }"));
|
||||
BOOST_CHECK(successParse("{ for { let i := 1 } lt(i, 5) { i := add(i, 1) } {} }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(for_invalid_expression)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ for {} {} {} {} }", ParserError, "Literal or identifier expected.");
|
||||
CHECK_PARSE_ERROR("{ for 1 1 {} {} }", ParserError, "Expected '{' but got 'Number'");
|
||||
CHECK_PARSE_ERROR("{ for {} 1 1 {} }", ParserError, "Expected '{' but got 'Number'");
|
||||
CHECK_PARSE_ERROR("{ for {} 1 {} 1 }", ParserError, "Expected '{' but got 'Number'");
|
||||
CHECK_PARSE_ERROR("{ for {} mload {} {} }", ParserError, "Expected '(' but got '{'");
|
||||
CHECK_PARSE_ERROR("{ for {} mstore(1, 1) {} {} }", TypeError, "Expected expression to evaluate to one value, but got 0 values instead.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(for_visibility)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ for { let i := 1 } i { pop(i) } { pop(i) } }"));
|
||||
CHECK_PARSE_ERROR("{ for {} i { let i := 1 } {} }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for {} 1 { let i := 1 } { pop(i) } }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for {} 1 { pop(i) } { let i := 1 } }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for { pop(i) } 1 { let i := 1 } {} }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for { pop(i) } 1 { } { let i := 1 } }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for {} i {} { let i := 1 } }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for {} 1 { pop(i) } { let i := 1 } }", DeclarationError, "Identifier not found");
|
||||
CHECK_PARSE_ERROR("{ for { let x := 1 } 1 { let x := 1 } {} }", DeclarationError, "Variable name x already taken in this scope");
|
||||
CHECK_PARSE_ERROR("{ for { let x := 1 } 1 {} { let x := 1 } }", DeclarationError, "Variable name x already taken in this scope");
|
||||
CHECK_PARSE_ERROR("{ let x := 1 for { let x := 1 } 1 {} {} }", DeclarationError, "Variable name x already taken in this scope");
|
||||
CHECK_PARSE_ERROR("{ let x := 1 for {} 1 { let x := 1 } {} }", DeclarationError, "Variable name x already taken in this scope");
|
||||
CHECK_PARSE_ERROR("{ let x := 1 for {} 1 {} { let x := 1 } }", DeclarationError, "Variable name x already taken in this scope");
|
||||
// Check that body and post are not sub-scopes of each other.
|
||||
BOOST_CHECK(successParse("{ for {} 1 { let x := 1 } { let x := 1 } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blocks)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 7 { let y := 3 } { let z := 2 } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(number_literals)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ let x := 1 }"));
|
||||
CHECK_PARSE_ERROR("{ let x := .1 }", ParserError, "Invalid number literal.");
|
||||
CHECK_PARSE_ERROR("{ let x := 1e5 }", ParserError, "Invalid number literal.");
|
||||
CHECK_PARSE_ERROR("{ let x := 67.235 }", ParserError, "Invalid number literal.");
|
||||
CHECK_STRICT_ERROR("{ let x := 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", TypeError, "Number literal too large (> 256 bits)");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_definitions)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ function f() { } function g(a) -> x { } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_definitions_multiple_args)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ function f(a, d) { } function g(a, d) -> x, y { } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_calls)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ function f(a) -> b {} function g(a, b, c) {} function x() { g(1, 2, f(mul(2, 3))) x() } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(opcode_for_functions)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ function gas() { } }", ParserError, "Cannot use builtin");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(opcode_for_function_args)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ function f(gas) { } }", ParserError, "Cannot use builtin");
|
||||
CHECK_PARSE_ERROR("{ function f() -> gas { } }", ParserError, "Cannot use builtin");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(name_clashes)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let g := 2 function g() { } }", DeclarationError, "Variable name g already taken in this scope");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(name_clashes_function_subscope)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ function g() { function g() {} } }", DeclarationError, "Function name g already taken in this scope");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(name_clashes_function_subscope_reverse)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ { function g() {} } function g() { } }", DeclarationError, "Function name g already taken in this scope");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(name_clashes_function_variable_subscope)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ function g() { let g := 0 } }", DeclarationError, "Variable name g already taken in this scope");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(name_clashes_function_variable_subscope_reverse)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ { let g := 0 } function g() { } }", DeclarationError, "Variable name g already taken in this scope");
|
||||
}
|
||||
BOOST_AUTO_TEST_CASE(functions_in_parallel_scopes)
|
||||
{
|
||||
BOOST_CHECK(successParse("{ { function g() {} } { function g() {} } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(variable_access_cross_functions)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let x := 2 function g() { pop(x) } }", DeclarationError, "Identifier not found.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(invalid_tuple_assignment)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let x, y := 1 }", DeclarationError, "Variable count mismatch: 2 variables and 1 values");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(instruction_too_few_arguments)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ pop(mul()) }", TypeError, "Function expects 2 arguments but got 0.");
|
||||
CHECK_PARSE_ERROR("{ pop(mul(1)) }", TypeError, "Function expects 2 arguments but got 1.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(instruction_too_many_arguments)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ pop(mul(1, 2, 3)) }", TypeError, "Function expects 2 arguments but got 3");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(recursion_depth)
|
||||
{
|
||||
string input;
|
||||
for (size_t i = 0; i < 20000; i++)
|
||||
input += "{";
|
||||
input += "let x := 0";
|
||||
for (size_t i = 0; i < 20000; i++)
|
||||
input += "}";
|
||||
|
||||
CHECK_PARSE_ERROR(input, ParserError, "recursion");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiple_assignment)
|
||||
{
|
||||
CHECK_PARSE_ERROR("{ let x function f() -> a, b {} 123, x := f() }", ParserError, "Variable name must precede \",\" in multiple assignment.");
|
||||
CHECK_PARSE_ERROR("{ let x function f() -> a, b {} x, 123 := f() }", ParserError, "Variable name must precede \":=\" in assignment.");
|
||||
|
||||
/// NOTE: Travis hiccups if not having a variable
|
||||
char const* text = R"(
|
||||
{
|
||||
function f(a) -> r1, r2 {
|
||||
r1 := a
|
||||
r2 := 7
|
||||
}
|
||||
let x := 9
|
||||
let y := 2
|
||||
x, y := f(x)
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(successParse(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(Printing)
|
||||
BOOST_AUTO_TEST_SUITE(Printing) // {{{
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_smoke)
|
||||
{
|
||||
@@ -593,8 +257,9 @@ BOOST_AUTO_TEST_CASE(function_calls)
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
// }}}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(Analysis)
|
||||
BOOST_AUTO_TEST_SUITE(Analysis) // {{{
|
||||
|
||||
BOOST_AUTO_TEST_CASE(string_literals)
|
||||
{
|
||||
@@ -633,50 +298,6 @@ BOOST_AUTO_TEST_CASE(revert)
|
||||
BOOST_CHECK(successAssemble("{ revert(0, 0) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_calls)
|
||||
{
|
||||
BOOST_CHECK(successAssemble("{ function f() {} }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() { let y := 2 } }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() -> z { let y := 2 } }"));
|
||||
BOOST_CHECK(successAssemble("{ function f(a) { let y := 2 } }"));
|
||||
BOOST_CHECK(successAssemble("{ function f(a) { let y := a } }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() -> x, y, z {} }"));
|
||||
BOOST_CHECK(successAssemble("{ function f(x, y, z) {} }"));
|
||||
BOOST_CHECK(successAssemble("{ function f(a, b) -> x, y, z { y := a } }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() {} f() }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() -> x, y { x := 1 y := 2} let a, b := f() }"));
|
||||
BOOST_CHECK(successAssemble("{ function f(a, b) -> x, y { x := b y := a } let a, b := f(2, 3) }"));
|
||||
BOOST_CHECK(successAssemble("{ function rec(a) { rec(sub(a, 1)) } rec(2) }"));
|
||||
BOOST_CHECK(successAssemble("{ let r := 2 function f() -> x, y { x := 1 y := 2} let a, b := f() b := r }"));
|
||||
BOOST_CHECK(successAssemble("{ function f() { g() } function g() { f() } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(embedded_functions)
|
||||
{
|
||||
BOOST_CHECK(successAssemble("{ function f(r, s) -> x { function g(a) -> b { } x := g(2) } let x := f(2, 3) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(switch_statement)
|
||||
{
|
||||
BOOST_CHECK(successAssemble("{ switch 1 default {} }"));
|
||||
BOOST_CHECK(successAssemble("{ switch 1 case 1 {} default {} }"));
|
||||
BOOST_CHECK(successAssemble("{ switch 1 case 1 {} }"));
|
||||
BOOST_CHECK(successAssemble("{ let a := 3 switch a case 1 { a := 1 } case 2 { a := 5 } a := 9}"));
|
||||
BOOST_CHECK(successAssemble("{ let a := 2 switch calldataload(0) case 1 { a := 1 } case 2 { a := 5 } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(for_statement)
|
||||
{
|
||||
BOOST_CHECK(successAssemble("{ for {} 1 {} {} }"));
|
||||
BOOST_CHECK(successAssemble("{ let x := calldatasize() for { let i := 0} lt(i, x) { i := add(i, 1) } { mstore(i, 2) } }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(if_statement)
|
||||
{
|
||||
BOOST_CHECK(successAssemble("{ if 1 {} }"));
|
||||
BOOST_CHECK(successAssemble("{ let x := 0 if eq(calldatasize(), 0) { x := 1 } mstore(0, x) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(large_constant)
|
||||
{
|
||||
auto source = R"({
|
||||
@@ -706,13 +327,6 @@ BOOST_AUTO_TEST_CASE(returndatacopy)
|
||||
BOOST_CHECK(successAssemble("{ returndatacopy(0, 32, 64) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(returndatacopy_functional)
|
||||
{
|
||||
if (!solidity::test::CommonOptions::get().evmVersion().supportsReturndata())
|
||||
return;
|
||||
BOOST_CHECK(successAssemble("{ returndatacopy(0, 32, 64) }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(staticcall)
|
||||
{
|
||||
if (!solidity::test::CommonOptions::get().evmVersion().hasStaticCall())
|
||||
@@ -751,7 +365,7 @@ BOOST_AUTO_TEST_CASE(jump_error)
|
||||
CHECK_PARSE_WARNING("{ jumpi(44, 2) }", DeclarationError, "Function not found.");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
BOOST_AUTO_TEST_SUITE_END() // }}}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#include <test/libsolidity/SMTCheckerTest.h>
|
||||
#include <test/Common.h>
|
||||
|
||||
#include <libsolidity/formal/ModelChecker.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity;
|
||||
using namespace solidity::langutil;
|
||||
@@ -47,7 +45,13 @@ SMTCheckerTest::SMTCheckerTest(string const& _filename): SyntaxTest(_filename, E
|
||||
if (!available.cvc4)
|
||||
m_enabledSolvers.cvc4 = false;
|
||||
|
||||
if (m_enabledSolvers.none())
|
||||
auto engine = ModelCheckerEngine::fromString(m_reader.stringSetting("SMTEngine", "all"));
|
||||
if (engine)
|
||||
m_modelCheckerSettings.engine = *engine;
|
||||
else
|
||||
BOOST_THROW_EXCEPTION(runtime_error("Invalid SMT engine choice."));
|
||||
|
||||
if (m_enabledSolvers.none() || m_modelCheckerSettings.engine.none())
|
||||
m_shouldRun = false;
|
||||
}
|
||||
|
||||
@@ -55,6 +59,7 @@ TestCase::TestResult SMTCheckerTest::run(ostream& _stream, string const& _linePr
|
||||
{
|
||||
setupCompiler();
|
||||
compiler().setSMTSolverChoice(m_enabledSolvers);
|
||||
compiler().setModelCheckerSettings(m_modelCheckerSettings);
|
||||
parseAndAnalyze();
|
||||
filterObtainedErrors();
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
#include <libsmtutil/SolverInterface.h>
|
||||
|
||||
#include <libsolidity/formal/ModelChecker.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace solidity::frontend::test
|
||||
@@ -39,6 +41,12 @@ public:
|
||||
TestResult run(std::ostream& _stream, std::string const& _linePrefix = "", bool _formatted = false) override;
|
||||
|
||||
protected:
|
||||
/// This contains engine and timeout.
|
||||
/// The engine can be set via option SMTEngine in the test.
|
||||
/// The possible options are `all`, `chc`, `bmc`, `none`,
|
||||
/// where the default is `all`.
|
||||
ModelCheckerSettings m_modelCheckerSettings;
|
||||
|
||||
/// This is set via option SMTSolvers in the test.
|
||||
/// The possible options are `all`, `z3`, `cvc4`, `none`,
|
||||
/// where if none is given the default used option is `all`.
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
contract C {
|
||||
function f1() public returns (bytes memory) {
|
||||
return abi.encode("");
|
||||
}
|
||||
function f2(string calldata msg) public returns (bytes memory) {
|
||||
return abi.encode(msg);
|
||||
}
|
||||
function g1() public returns (bytes memory) {
|
||||
return abi.encodePacked("");
|
||||
}
|
||||
function g2(string calldata msg) public returns (bytes memory) {
|
||||
return abi.encodePacked(msg);
|
||||
}
|
||||
function h1() public returns (bytes memory) {
|
||||
return abi.encodeWithSelector(0x00000001, "");
|
||||
}
|
||||
function h2(string calldata msg) public returns (bytes memory) {
|
||||
return abi.encodeWithSelector(0x00000001, msg);
|
||||
}
|
||||
}
|
||||
|
||||
// ====
|
||||
// ABIEncoderV1Only: true
|
||||
// compileViaYul: false
|
||||
// ----
|
||||
// f1() -> 0x20, 0x60, 0x20, 0, 0
|
||||
// f2(string): 0x20, 0 -> 0x20, 0x40, 0x20, 0
|
||||
// f2(string): 0x20, 0, 0 -> 0x20, 0x40, 0x20, 0
|
||||
// g1() -> 32, 0
|
||||
// g2(string): 0x20, 0 -> 0x20, 0
|
||||
// g2(string): 0x20, 0, 0 -> 0x20, 0
|
||||
// h1() -> 0x20, 0x64, 26959946667150639794667015087019630673637144422540572481103610249216, 862718293348820473429344482784628181556388621521298319395315527974912, 0, 0
|
||||
// h2(string): 0x20, 0 -> 0x20, 0x44, 26959946667150639794667015087019630673637144422540572481103610249216, 862718293348820473429344482784628181556388621521298319395315527974912, 0
|
||||
// h2(string): 0x20, 0, 0 -> 0x20, 0x44, 26959946667150639794667015087019630673637144422540572481103610249216, 862718293348820473429344482784628181556388621521298319395315527974912, 0
|
||||
@@ -16,6 +16,8 @@ contract C {
|
||||
return (this.ggg(s.f), this.h(s));
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// ffff(uint256): 0 -> 0, 0
|
||||
// ggg(function): 0 -> 0
|
||||
|
||||
@@ -24,5 +24,7 @@ contract C {
|
||||
}
|
||||
}
|
||||
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// t() -> 9
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
struct S {
|
||||
uint16 a;
|
||||
function() external returns (uint) x;
|
||||
uint16 b;
|
||||
}
|
||||
contract Flow {
|
||||
S[2] t;
|
||||
|
||||
function X() public pure returns (uint) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function Y() public pure returns (uint) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
t[0].a = 0xff07;
|
||||
t[0].b = 0xff07;
|
||||
t[1].x = this.Y;
|
||||
t[1].a = 0xff07;
|
||||
t[1].b = 0xff07;
|
||||
t[0].x = this.X;
|
||||
}
|
||||
|
||||
function f() public returns (uint, uint) {
|
||||
return (t[0].x(), t[1].x());
|
||||
}
|
||||
}
|
||||
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 1, 2
|
||||
@@ -0,0 +1,18 @@
|
||||
pragma abicoder v1;
|
||||
contract C {
|
||||
function f() public {
|
||||
revert("");
|
||||
}
|
||||
function g(string calldata msg) public {
|
||||
revert(msg);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// ABIEncoderV1Only: true
|
||||
// EVMVersion: >=byzantium
|
||||
// compileViaYul: false
|
||||
// revertStrings: debug
|
||||
// ----
|
||||
// f() -> FAILURE, hex"08c379a0", 0x20, 0, ""
|
||||
// g(string): 0x20, 0, "" -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): 0x20, 0 -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
@@ -0,0 +1,18 @@
|
||||
contract C {
|
||||
function f() public {
|
||||
revert("");
|
||||
}
|
||||
function g(string calldata msg) public {
|
||||
revert(msg);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// ABIEncoderV1Only: true
|
||||
// EVMVersion: >=byzantium
|
||||
// compileViaYul: true
|
||||
// revertStrings: debug
|
||||
// ----
|
||||
// f() -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): "" -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): 0x20, 0, "" -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): 0x20, 0 -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
@@ -0,0 +1,18 @@
|
||||
pragma experimental ABIEncoderV2;
|
||||
contract C {
|
||||
function f() public {
|
||||
revert("");
|
||||
}
|
||||
function g(string calldata msg) public {
|
||||
revert(msg);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
// compileViaYul: also
|
||||
// revertStrings: debug
|
||||
// ----
|
||||
// f() -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): "" -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): 0x20, 0, "" -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
// g(string): 0x20, 0 -> FAILURE, hex"08c379a0", 0x20, 0
|
||||
@@ -39,6 +39,8 @@ contract C {
|
||||
}
|
||||
}
|
||||
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// set() ->
|
||||
// t1() -> 7
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
contract C {
|
||||
function f() public pure returns (string memory) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0x20, 0
|
||||
@@ -0,0 +1,30 @@
|
||||
contract C {
|
||||
function f() public pure returns (string memory) {
|
||||
return "";
|
||||
}
|
||||
function g(string calldata msg) public pure returns (string memory) {
|
||||
return msg;
|
||||
}
|
||||
function h(string calldata msg, uint256 v) public pure returns (string memory, uint256) {
|
||||
return (msg, v);
|
||||
}
|
||||
// Adjusting order of input/output intentionally.
|
||||
function i(string calldata msg1, uint256 v, string calldata msg2) public pure returns (string memory, string memory, uint256) {
|
||||
return (msg1, msg2, v);
|
||||
}
|
||||
function j(string calldata msg1, uint256 v) public pure returns (string memory, string memory, uint256) {
|
||||
return (msg1, "", v);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0x20, 0
|
||||
// g(string): 0x20, 0, "" -> 0x20, 0
|
||||
// g(string): 0x20, 0 -> 0x20, 0
|
||||
// h(string,uint256): 0x40, 0x888, 0, "" -> 0x40, 0x0888, 0
|
||||
// h(string,uint256): 0x40, 0x888, 0 -> 0x40, 0x0888, 0
|
||||
// i(string,uint256,string): 0x60, 0x888, 0x60, 0, "" -> 0x60, 0x80, 0x0888, 0, 0
|
||||
// i(string,uint256,string): 0x60, 0x888, 0x60, 0 -> 0x60, 0x80, 0x0888, 0, 0
|
||||
// j(string,uint256): 0x40, 0x888, 0, "" -> 0x60, 0x80, 0x0888, 0, 0
|
||||
// j(string,uint256): 0x40, 0x888, 0 -> 0x60, 0x80, 0x0888, 0, 0
|
||||
@@ -0,0 +1,20 @@
|
||||
contract C {
|
||||
function _() public pure returns (uint) {
|
||||
return 88;
|
||||
}
|
||||
|
||||
function g() public pure returns (uint){
|
||||
return _();
|
||||
}
|
||||
|
||||
function h() public pure returns (uint) {
|
||||
_;
|
||||
return 33;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// _() -> 88
|
||||
// g() -> 88
|
||||
// h() -> 33
|
||||
@@ -0,0 +1,16 @@
|
||||
contract C {
|
||||
function f() public pure returns (uint) {
|
||||
uint _;
|
||||
return _;
|
||||
}
|
||||
|
||||
function g() public pure returns (uint) {
|
||||
uint _ = 1;
|
||||
return _;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0
|
||||
// g() -> 1
|
||||
@@ -0,0 +1,23 @@
|
||||
contract C {
|
||||
modifier m() {
|
||||
_;
|
||||
}
|
||||
|
||||
modifier n() {
|
||||
string memory _ = "failed";
|
||||
_;
|
||||
revert(_);
|
||||
}
|
||||
|
||||
function f() m() public returns (uint) {
|
||||
return 88;
|
||||
}
|
||||
|
||||
function g() n() public returns (uint) {
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
// ----
|
||||
// f() -> 88
|
||||
// g() -> FAILURE, hex"08c379a0", 0x20, 6, "failed"
|
||||
@@ -0,0 +1,26 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f(uint x) public pure {
|
||||
assert(x > 0);
|
||||
}
|
||||
function g(uint x) public pure {
|
||||
require(x >= 0);
|
||||
}
|
||||
function h(uint x) public pure {
|
||||
require(x == 2);
|
||||
require(x != 2);
|
||||
}
|
||||
function i(uint x) public pure {
|
||||
if (false) {
|
||||
if (x != 2) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// SMTEngine: bmc
|
||||
// ----
|
||||
// Warning 4661: (81-94): BMC: Assertion violation happens here.
|
||||
// Warning 6838: (143-149): BMC: Condition is always true.
|
||||
// Warning 6838: (218-224): BMC: Condition is always false.
|
||||
// Warning 2512: (286-292): BMC: Condition unreachable.
|
||||
@@ -0,0 +1,10 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
function f(address payable a) public {
|
||||
a.transfer(200);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// SMTEngine: bmc
|
||||
// ----
|
||||
// Warning 1236: (87-102): BMC: Insufficient funds happens here.
|
||||
@@ -0,0 +1,25 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
uint z = 1;
|
||||
uint w = z - 3;
|
||||
function a(uint x, uint y) public pure returns (uint) {
|
||||
return x + y;
|
||||
}
|
||||
function s(uint x, uint y) public pure returns (uint) {
|
||||
return x - y;
|
||||
}
|
||||
function m(uint x, uint y) public pure returns (uint) {
|
||||
return x * y;
|
||||
}
|
||||
function d(uint x, uint y) public pure returns (uint) {
|
||||
return x / y;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// SMTEngine: bmc
|
||||
// ----
|
||||
// Warning 2661: (141-146): BMC: Overflow (resulting value larger than 2**256 - 1) happens here.
|
||||
// Warning 4144: (217-222): BMC: Underflow (resulting value less than 0) happens here.
|
||||
// Warning 2661: (293-298): BMC: Overflow (resulting value larger than 2**256 - 1) happens here.
|
||||
// Warning 3046: (369-374): BMC: Division by zero happens here.
|
||||
// Warning 6084: (68-73): BMC: Underflow (resulting value less than 0) happens here.
|
||||
@@ -36,3 +36,5 @@ library MerkleProof {
|
||||
// ----
|
||||
// Warning 4588: (988-1032): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (1175-1219): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (988-1032): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (1175-1219): Assertion checker does not yet implement this type of function call.
|
||||
|
||||
@@ -84,4 +84,5 @@ contract InternalCall {
|
||||
// Warning 2018: (1212-1274): Function state mutability can be restricted to pure
|
||||
// Warning 2018: (1280-1342): Function state mutability can be restricted to pure
|
||||
// Warning 4588: (771-814): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (1403-1408): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (771-814): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (1403-1408): BMC does not yet implement this type of function call.
|
||||
|
||||
@@ -11,3 +11,5 @@ contract C {
|
||||
// Warning 2072: (133-143): Unused local variable.
|
||||
// Warning 8364: (146-147): Assertion checker does not yet implement type type(struct C.A storage pointer)
|
||||
// Warning 4639: (146-163): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (146-147): Assertion checker does not yet implement type type(struct C.A storage pointer)
|
||||
// Warning 4639: (146-163): Assertion checker does not yet implement this expression.
|
||||
|
||||
@@ -11,3 +11,5 @@ contract C {
|
||||
// Warning 6321: (75-79): Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.
|
||||
// Warning 7645: (98-121): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (124-159): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (98-121): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (124-159): Assertion checker does not support try/catch clauses.
|
||||
|
||||
@@ -12,3 +12,5 @@ contract C {
|
||||
// ----
|
||||
// Warning 7645: (83-85): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (88-122): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (83-85): Assertion checker does not support try/catch clauses.
|
||||
// Warning 7645: (88-122): Assertion checker does not support try/catch clauses.
|
||||
|
||||
@@ -24,6 +24,8 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6031: (261-267): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 7650: (284-296): Assertion checker does not yet support this expression.
|
||||
// Warning 6328: (470-495): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (540-565): CHC: Assertion violation happens here.
|
||||
// Warning 6031: (261-267): Internal error: Expression undefined for SMT solver.
|
||||
|
||||
@@ -7,3 +7,5 @@ contract C {
|
||||
// ----
|
||||
// Warning 4588: (162-176): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (178-203): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (162-176): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (178-203): Assertion checker does not yet implement this type of function call.
|
||||
|
||||
@@ -18,3 +18,4 @@ contract C
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (228-229): Assertion checker does not yet implement type type(library L)
|
||||
// Warning 8364: (228-229): Assertion checker does not yet implement type type(library L)
|
||||
|
||||
@@ -17,5 +17,6 @@ contract C
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (228-229): Assertion checker does not yet implement type type(library L)
|
||||
// Warning 6328: (245-261): CHC: Assertion violation happens here.
|
||||
// Warning 8364: (228-229): Assertion checker does not yet implement type type(library L)
|
||||
|
||||
@@ -16,3 +16,4 @@ library L {
|
||||
// ----
|
||||
// Warning 2018: (131-190): Function state mutability can be restricted to pure
|
||||
// Warning 8364: (86-87): Assertion checker does not yet implement type type(library L)
|
||||
// Warning 8364: (86-87): Assertion checker does not yet implement type type(library L)
|
||||
|
||||
@@ -19,6 +19,7 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (300-302): Assertion checker does not yet implement type type(library l1)
|
||||
// Warning 6328: (136-155): CHC: Assertion violation happens here.
|
||||
// Warning 4984: (229-234): CHC: Overflow (resulting value larger than 2**256 - 1) happens here.
|
||||
// Warning 4984: (327-332): CHC: Overflow (resulting value larger than 2**256 - 1) happens here.
|
||||
|
||||
@@ -15,5 +15,6 @@ library L {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (c:104-105): Assertion checker does not yet implement type type(library L)
|
||||
// Warning 6328: (c:113-126): CHC: Assertion violation happens here.
|
||||
// Warning 8364: (c:104-105): Assertion checker does not yet implement type type(library L)
|
||||
|
||||
@@ -9,3 +9,4 @@ contract C
|
||||
}
|
||||
// ----
|
||||
// Warning 7737: (76-90): Assertion checker does not support inline assembly.
|
||||
// Warning 7737: (76-90): Assertion checker does not support inline assembly.
|
||||
|
||||
@@ -11,3 +11,4 @@ contract C
|
||||
}
|
||||
// ----
|
||||
// Warning 7737: (97-121): Assertion checker does not support inline assembly.
|
||||
// Warning 7737: (97-121): Assertion checker does not support inline assembly.
|
||||
|
||||
@@ -12,3 +12,7 @@ contract C {
|
||||
// Warning 8364: (231-237): Assertion checker does not yet implement type type(uint256[] memory)
|
||||
// Warning 8364: (231-240): Assertion checker does not yet implement type type(uint256[] memory[2] memory)
|
||||
// Warning 4588: (202-242): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 8364: (221-222): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 8364: (231-237): Assertion checker does not yet implement type type(uint256[] memory)
|
||||
// Warning 8364: (231-240): Assertion checker does not yet implement type type(uint256[] memory[2] memory)
|
||||
// Warning 4588: (202-242): Assertion checker does not yet implement this type of function call.
|
||||
|
||||
@@ -12,6 +12,8 @@ contract C {
|
||||
// ----
|
||||
// Warning 2072: (122-129): Unused local variable.
|
||||
// Warning 2072: (178-185): Unused local variable.
|
||||
// Warning 4588: (133-164): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (189-220): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 6328: (300-316): CHC: Assertion violation happens here.
|
||||
// Warning 4588: (133-164): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (189-220): Assertion checker does not yet implement this type of function call.
|
||||
|
||||
@@ -13,6 +13,10 @@ contract C {
|
||||
// Warning 2072: (97-101): Unused local variable.
|
||||
// Warning 2072: (156-166): Unused local variable.
|
||||
// Warning 2072: (168-172): Unused local variable.
|
||||
// Warning 8364: (139-140): Assertion checker does not yet implement type type(contract C)
|
||||
// Warning 4588: (105-142): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 8364: (210-211): Assertion checker does not yet implement type type(contract C)
|
||||
// Warning 4588: (176-213): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 6328: (293-309): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (313-329): CHC: Assertion violation happens here.
|
||||
// Warning 8364: (139-140): Assertion checker does not yet implement type type(contract C)
|
||||
|
||||
@@ -6,3 +6,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 4588: (126-154): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 4588: (126-154): Assertion checker does not yet implement this type of function call.
|
||||
|
||||
@@ -11,3 +11,4 @@ contract C
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (132-133): Assertion checker does not yet implement type type(enum C.D)
|
||||
// Warning 8364: (132-133): Assertion checker does not yet implement type type(enum C.D)
|
||||
|
||||
+7
-4
@@ -12,11 +12,14 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 2519: (128-159): This declaration shadows an existing declaration.
|
||||
// Warning 6031: (214-218): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 6031: (222-226): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 7229: (238-244): Assertion checker does not yet implement the type function (uint256) returns (uint256) for comparisons
|
||||
// Warning 6328: (207-227): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (231-245): CHC: Assertion violation happens here.
|
||||
// Warning 5729: (214-218): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (222-226): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (214-218): BMC does not yet implement this type of function call.
|
||||
// Warning 5729: (222-226): BMC does not yet implement this type of function call.
|
||||
// Warning 7229: (238-244): Assertion checker does not yet implement the type function (uint256) returns (uint256) for comparisons
|
||||
// Warning 5729: (214-218): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (222-226): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (214-218): BMC does not yet implement this type of function call.
|
||||
// Warning 5729: (222-226): BMC does not yet implement this type of function call.
|
||||
// Warning 7229: (238-244): Assertion checker does not yet implement the type function (uint256) returns (uint256) for comparisons
|
||||
|
||||
@@ -72,3 +72,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (1414-1415): Assertion checker does not yet implement type type(enum E)
|
||||
// Warning 8364: (1414-1415): Assertion checker does not yet implement type type(enum E)
|
||||
@@ -68,3 +68,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (1229-1230): Assertion checker does not yet implement type type(contract D)
|
||||
// Warning 8364: (1229-1230): Assertion checker does not yet implement type type(contract D)
|
||||
|
||||
@@ -9,5 +9,5 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 5729: (121-125): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (121-125): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (121-125): BMC does not yet implement this type of function call.
|
||||
// Warning 5729: (121-125): BMC does not yet implement this type of function call.
|
||||
|
||||
@@ -7,3 +7,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 7650: (128-137): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (128-137): Assertion checker does not yet support this expression.
|
||||
|
||||
@@ -7,3 +7,4 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// Warning 7650: (108-118): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (108-118): Assertion checker does not yet support this expression.
|
||||
|
||||
@@ -12,10 +12,14 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 5729: (123-128): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 8115: (152-197): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8364: (212-214): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (212-219): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 6031: (255-257): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 8364: (255-257): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (212-219): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (123-128): BMC does not yet implement this type of function call.
|
||||
// Warning 8115: (152-197): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8364: (212-214): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (212-219): BMC does not yet implement this type of function call.
|
||||
// Warning 6031: (255-257): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 8364: (255-257): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (212-219): BMC does not yet implement this type of function call.
|
||||
|
||||
@@ -15,11 +15,16 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 5729: (195-200): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 8115: (224-269): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8364: (284-286): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 1695: (287-288): Assertion checker does not yet support this global variable.
|
||||
// Warning 5729: (284-291): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 6031: (327-329): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 8364: (327-329): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (284-291): Assertion checker does not yet implement this type of function call.
|
||||
// Warning 5729: (195-200): BMC does not yet implement this type of function call.
|
||||
// Warning 8115: (224-269): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8364: (284-286): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 1695: (287-288): Assertion checker does not yet support this global variable.
|
||||
// Warning 5729: (284-291): BMC does not yet implement this type of function call.
|
||||
// Warning 6031: (327-329): Internal error: Expression undefined for SMT solver.
|
||||
// Warning 8364: (327-329): Assertion checker does not yet implement type function (function (uint256))
|
||||
// Warning 5729: (284-291): BMC does not yet implement this type of function call.
|
||||
|
||||
@@ -11,6 +11,8 @@ contract C
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (159-160): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (159-163): Assertion checker does not yet implement this expression.
|
||||
// Warning 6838: (140-144): BMC: Condition is always false.
|
||||
// Warning 8364: (159-160): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (159-163): Assertion checker does not yet implement this expression.
|
||||
|
||||
@@ -22,3 +22,9 @@ contract test {
|
||||
// Warning 8364: (140-141): Assertion checker does not yet implement type type(struct test.s storage pointer)
|
||||
// Warning 8364: (140-144): Assertion checker does not yet implement type type(struct test.s memory[7] memory)
|
||||
// Warning 8364: (156-163): Assertion checker does not yet implement type type(uint256[7] memory)
|
||||
// Warning 8364: (125-126): Assertion checker does not yet implement type type(struct test.s storage pointer)
|
||||
// Warning 8364: (130-131): Assertion checker does not yet implement type type(struct test.s storage pointer)
|
||||
// Warning 4639: (130-136): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (140-141): Assertion checker does not yet implement type type(struct test.s storage pointer)
|
||||
// Warning 8364: (140-144): Assertion checker does not yet implement type type(struct test.s memory[7] memory)
|
||||
// Warning 8364: (156-163): Assertion checker does not yet implement type type(uint256[7] memory)
|
||||
|
||||
@@ -13,6 +13,16 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (88-92): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (131-135): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (131-133): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (139-143): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (139-141): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (155-159): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (155-157): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (170-174): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (170-172): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 6328: (124-144): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (148-182): CHC: Assertion violation happens here.
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
|
||||
@@ -22,6 +22,48 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (88-92): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (131-135): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (131-133): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (139-143): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (139-141): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (155-159): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (155-157): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (170-174): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (170-172): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (193-202): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (193-197): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (193-195): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (193-200): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (206-215): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (206-210): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (206-208): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (206-213): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (246-250): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (246-248): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (246-250): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (259-263): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (259-261): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (259-263): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (272-276): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (272-274): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (272-283): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (272-276): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (287-291): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (287-289): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (287-298): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (287-291): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (302-311): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (302-306): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (302-304): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (302-309): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (302-311): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (320-329): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (320-324): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (320-322): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (320-327): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (320-329): Assertion checker does not support recursive structs.
|
||||
// Warning 6328: (124-144): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (148-182): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (186-216): CHC: Assertion violation happens here.
|
||||
|
||||
@@ -28,6 +28,94 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (88-92): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (131-135): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (131-133): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (139-143): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (139-141): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (155-159): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (155-157): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (170-174): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (170-172): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (193-202): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (193-197): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (193-195): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (193-200): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (206-215): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (206-210): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (206-208): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (206-213): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (227-236): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (227-231): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (227-229): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (227-234): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (247-256): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (247-251): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (247-249): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (247-254): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (275-289): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (275-284): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (275-279): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (275-277): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (275-282): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (275-287): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (293-307): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (293-302): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (293-297): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (293-295): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (293-300): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (293-305): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (338-342): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (338-340): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (338-342): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (351-355): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (351-353): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (351-355): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (364-368): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (364-366): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (364-375): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (364-368): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (379-383): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (379-381): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (379-390): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (379-383): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (394-403): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (394-398): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (394-396): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (394-401): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (394-403): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (412-421): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (412-416): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (412-414): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (412-419): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (412-421): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (430-439): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (430-434): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (430-432): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (430-437): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (430-446): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (430-439): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (450-459): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (450-454): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (450-452): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (450-457): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (450-466): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (450-459): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (470-484): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (470-479): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (470-474): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (470-472): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (470-477): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (470-482): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (470-484): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (493-507): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (493-502): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (493-497): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (493-495): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (493-500): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (493-505): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (493-507): Assertion checker does not support recursive structs.
|
||||
// Warning 6328: (124-144): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (148-182): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (186-216): CHC: Assertion violation happens here.
|
||||
|
||||
@@ -18,6 +18,39 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (88-92): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (135-147): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (166-178): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8364: (155-157): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (160-162): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (150-162): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 8364: (186-188): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (191-193): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (181-193): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 7650: (204-208): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (204-206): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 7650: (212-216): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (212-214): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (220-224): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (220-222): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 7650: (228-232): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (228-230): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (244-248): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (244-246): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 7650: (252-256): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (252-254): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (260-264): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (260-262): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 7650: (268-272): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (268-270): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (277-281): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (277-279): Assertion checker does not yet implement type struct C.S storage pointer
|
||||
// Warning 4375: (277-281): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (366-370): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (366-368): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (380-384): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (380-382): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 6328: (197-233): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (237-273): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (359-391): CHC: Assertion violation happens here.
|
||||
|
||||
@@ -16,6 +16,16 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8364: (126-135): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (153-166): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (170-181): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (170-179): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (170-188): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (170-181): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (199-210): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (199-208): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (221-228): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (221-226): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 6328: (192-236): CHC: Assertion violation happens here.
|
||||
// Warning 8364: (126-135): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (153-166): Assertion checker does not yet implement type struct C.S storage ref
|
||||
|
||||
@@ -21,6 +21,37 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (81-85): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (88-92): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (119-123): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (119-121): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (119-123): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (134-138): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (134-136): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (134-138): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (142-146): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (142-144): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (142-146): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (152-156): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (152-154): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (152-156): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (167-171): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (167-169): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (167-171): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (175-179): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (175-177): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (175-179): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (192-196): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (192-194): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (200-204): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (200-202): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (220-224): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (220-222): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (235-239): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (235-237): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (258-260): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (271-275): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (271-273): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4984: (200-208): CHC: Overflow (resulting value larger than 2**256 - 1) happens here.
|
||||
// Warning 6328: (185-209): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (213-247): CHC: Assertion violation happens here.
|
||||
|
||||
@@ -17,6 +17,16 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (115-119): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (122-126): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (165-169): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (165-167): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (173-177): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (173-175): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (189-193): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (189-191): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (204-208): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (204-206): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 6328: (158-178): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (182-216): CHC: Assertion violation happens here.
|
||||
// Warning 8115: (115-119): Assertion checker does not yet support the type of this variable.
|
||||
|
||||
@@ -20,6 +20,40 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 8115: (115-119): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (122-126): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 7650: (153-157): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (153-155): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (153-164): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 4375: (153-157): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (168-172): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (168-170): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (168-179): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 4375: (168-172): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (183-192): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (183-187): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (183-185): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (183-190): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 8364: (183-199): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (183-192): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (203-212): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (203-207): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (203-205): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (203-210): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 8364: (203-219): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 4375: (203-212): Assertion checker does not support recursive structs.
|
||||
// Warning 7650: (230-244): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (230-239): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (230-234): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (230-232): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (230-237): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 8364: (230-242): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 7650: (248-262): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (248-257): Assertion checker does not yet support this expression.
|
||||
// Warning 7650: (248-252): Assertion checker does not yet support this expression.
|
||||
// Warning 8364: (248-250): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 8364: (248-255): Assertion checker does not yet implement type struct C.T storage ref
|
||||
// Warning 8364: (248-260): Assertion checker does not yet implement type struct C.S storage ref
|
||||
// Warning 6328: (223-263): CHC: Assertion violation happens here.
|
||||
// Warning 8115: (115-119): Assertion checker does not yet support the type of this variable.
|
||||
// Warning 8115: (122-126): Assertion checker does not yet support the type of this variable.
|
||||
|
||||
@@ -19,3 +19,7 @@ contract C
|
||||
// Warning 4639: (149-153): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (173-174): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (173-177): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (149-150): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (149-153): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (173-174): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (173-177): Assertion checker does not yet implement this expression.
|
||||
|
||||
@@ -16,4 +16,6 @@ contract C {
|
||||
// ----
|
||||
// Warning 8364: (137-138): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (137-141): Assertion checker does not yet implement this expression.
|
||||
// Warning 8364: (137-138): Assertion checker does not yet implement type type(struct C.S storage pointer)
|
||||
// Warning 4639: (137-141): Assertion checker does not yet implement this expression.
|
||||
// Warning 4639: (137-141): Assertion checker does not yet implement this expression.
|
||||
|
||||
@@ -8,3 +8,5 @@ function f() public pure { int[][]; }
|
||||
// Warning 6133: (73-80): Statement has no effect.
|
||||
// Warning 8364: (73-78): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (73-80): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (73-78): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (73-80): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
|
||||
@@ -9,3 +9,6 @@ function f() public pure { int[][][]; }
|
||||
// Warning 8364: (73-78): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (73-80): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (73-82): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
// Warning 8364: (73-78): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (73-80): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (73-82): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
|
||||
@@ -9,3 +9,6 @@ function f() public pure { (int[][]); }
|
||||
// Warning 8364: (74-79): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (74-81): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (73-82): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (74-79): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (74-81): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (73-82): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
|
||||
@@ -10,3 +10,7 @@ function f() public pure { (int[][][]); }
|
||||
// Warning 8364: (74-81): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (74-83): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
// Warning 8364: (73-84): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
// Warning 8364: (74-79): Assertion checker does not yet implement type type(int256[] memory)
|
||||
// Warning 8364: (74-81): Assertion checker does not yet implement type type(int256[] memory[] memory)
|
||||
// Warning 8364: (74-83): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
// Warning 8364: (73-84): Assertion checker does not yet implement type type(int256[] memory[] memory[] memory)
|
||||
|
||||
@@ -11,6 +11,9 @@ contract C {
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 7507: (105-117): Assertion checker does not yet support this expression.
|
||||
// Warning 7507: (142-162): Assertion checker does not yet support this expression.
|
||||
// Warning 7507: (186-205): Assertion checker does not yet support this expression.
|
||||
// Warning 6328: (92-131): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (135-175): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (179-218): CHC: Assertion violation happens here.
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
function foo() pure internal {
|
||||
address(10).staticcall{value: 7, gas: 3}("");
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: >=byzantium
|
||||
// ----
|
||||
// TypeError 2842: (56-96): Cannot set option "value" for staticcall.
|
||||
// Warning 9302: (56-100): Return value of low-level calls not used.
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
function f() public {
|
||||
(bool success, ) = address(10).staticcall{gas: 3}("");
|
||||
success;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// EVMVersion: <byzantium
|
||||
// ----
|
||||
// TypeError 5052: (66-100): "staticcall" is not supported by the VM version.
|
||||
@@ -0,0 +1,5 @@
|
||||
function fun() {}
|
||||
|
||||
contract C is fun {}
|
||||
// ----
|
||||
// TypeError 8758: (33-36): Contract expected.
|
||||
@@ -0,0 +1,11 @@
|
||||
function ff() {}
|
||||
|
||||
contract C {
|
||||
function f() public pure {
|
||||
assembly {
|
||||
let x := ff
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 2025: (90-92): Access to functions is not allowed in inline assembly.
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
uint mload;
|
||||
assembly {
|
||||
let x := mload
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// ParserError 2314: (118-119): Expected '(' but got '}'
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
function f() public pure {
|
||||
uint mload;
|
||||
assembly {
|
||||
mload := 1
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// ParserError 2314: (101-103): Expected '(' but got ':='
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user