diff options
author | chriseth <chris@ethereum.org> | 2018-09-05 16:32:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-05 16:32:10 +0800 |
commit | a996ea266c4542b37503c1d2261a17f3d5a55dbb (patch) | |
tree | c270b6634ff1bb1814ab5524e05ef841610007a4 /test/libsolidity/syntaxTests/memberLookup | |
parent | e6aa15bae1839ce6761c75521e0166c06469dc2e (diff) | |
parent | de9f566a7cda48a8a23f91be380e8cd917ecaf34 (diff) | |
download | dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar.gz dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar.bz2 dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar.lz dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar.xz dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.tar.zst dexon-solidity-a996ea266c4542b37503c1d2261a17f3d5a55dbb.zip |
Merge pull request #4590 from ethereum/msgValueModifier
Warn if modifier uses msg.value in non-payable function
Diffstat (limited to 'test/libsolidity/syntaxTests/memberLookup')
3 files changed, 16 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_payable.sol b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_payable.sol new file mode 100644 index 00000000..6e93626f --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_payable.sol @@ -0,0 +1,4 @@ +contract C { + modifier costs(uint _amount) { require(msg.value >= _amount); _; } + function f() costs(1 ether) public payable {} +} diff --git a/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_pure.sol b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_pure.sol new file mode 100644 index 00000000..398c127d --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_pure.sol @@ -0,0 +1,6 @@ +contract C { + modifier costs(uint _amount) { require(msg.value >= _amount); _; } + function f() costs(1 ether) public pure {} +} +// ---- +// TypeError: (101-115): Function declared as pure, but this expression (potentially) reads from the environment or state and thus requires "view". diff --git a/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_view.sol b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_view.sol new file mode 100644 index 00000000..8430c5c3 --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/msg_value_modifier_view.sol @@ -0,0 +1,6 @@ +contract C { + modifier costs(uint _amount) { require(msg.value >= _amount); _; } + function f() costs(1 ether) public view {} +} +// ---- +// TypeError: (101-115): This modifier uses "msg.value" and thus the function has to be payable or internal. |