From 75a92b0ffd0946c17a27a58e6e02abe96cd3fa00 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Thu, 26 Jul 2018 21:45:24 +0200 Subject: Warns if modifier uses msg.value in non-payable function. --- test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier.sol | 6 ++++++ .../syntaxTests/viewPureChecker/msg_value_modifier_view.sol | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier.sol create mode 100644 test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol (limited to 'test/libsolidity/syntaxTests/viewPureChecker') diff --git a/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier.sol b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier.sol new file mode 100644 index 00000000..160b20a7 --- /dev/null +++ b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier.sol @@ -0,0 +1,6 @@ +contract C { + modifier m(uint _amount, uint _avail) { require(_avail >= _amount); _; } + function f() m(1 ether, msg.value) public pure {} +} +// ---- +// TypeError: (118-127): Function declared as pure, but this expression (potentially) reads from the environment or state and thus requires "view". diff --git a/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol new file mode 100644 index 00000000..4cad4439 --- /dev/null +++ b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol @@ -0,0 +1,6 @@ +contract C { + modifier m(uint _amount, uint _avail) { require(_avail >= _amount); _; } + function f() m(1 ether, msg.value) public view {} +} +// ---- +// Warning: (118-127): "msg.value" used in non-payable function. Do you want to add the "payable" modifier to this function? -- cgit v1.2.3 From 431c2fbcf370926d6c3e7e93667d8472f2f6b73b Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 16 Aug 2018 17:28:49 +0200 Subject: Turn warning into error. --- .../libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/libsolidity/syntaxTests/viewPureChecker') diff --git a/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol index 4cad4439..613b0198 100644 --- a/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol +++ b/test/libsolidity/syntaxTests/viewPureChecker/msg_value_modifier_view.sol @@ -3,4 +3,4 @@ contract C { function f() m(1 ether, msg.value) public view {} } // ---- -// Warning: (118-127): "msg.value" used in non-payable function. Do you want to add the "payable" modifier to this function? +// TypeError: (118-127): "msg.value" can only be used in payable public functions. Make the function "payable" or use an internal function to avoid this error. -- cgit v1.2.3