diff options
author | chriseth <chris@ethereum.org> | 2017-10-17 00:16:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-17 00:16:40 +0800 |
commit | 18a72dbe4668e23aaf38404183b978fbbb1824d1 (patch) | |
tree | 85a20a6872c7b2235c555df22ed186db6a9d52ba | |
parent | c2fab07ccdf9000023dd9373d9072d44dcdd93d7 (diff) | |
parent | 082e7b6a9ea5f4651bed0b2ab037dbba05af26eb (diff) | |
download | dexon-solidity-18a72dbe4668e23aaf38404183b978fbbb1824d1.tar.gz dexon-solidity-18a72dbe4668e23aaf38404183b978fbbb1824d1.tar.zst dexon-solidity-18a72dbe4668e23aaf38404183b978fbbb1824d1.zip |
Merge pull request #3086 from ethereum/allow_gas_in_view
Allow ``gas`` in view functions.
-rw-r--r-- | Changelog.md | 1 | ||||
-rw-r--r-- | libevmasm/SemanticInformation.cpp | 2 | ||||
-rw-r--r-- | test/libsolidity/ViewPureChecker.cpp | 7 |
3 files changed, 7 insertions, 3 deletions
diff --git a/Changelog.md b/Changelog.md index d78dbbba..ac27ca7f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -19,6 +19,7 @@ Bugfixes: (such as ``balance``, ``transfer``, etc.) * Type Checker: Prevent duplicate event declarations. * Type Checker: Do not mark event parameters as shadowing state variables. + * Type Checker: Allow ``gas`` in view functions. ### 0.4.17 (2017-09-21) diff --git a/libevmasm/SemanticInformation.cpp b/libevmasm/SemanticInformation.cpp index 83cfe2c6..61a6ccda 100644 --- a/libevmasm/SemanticInformation.cpp +++ b/libevmasm/SemanticInformation.cpp @@ -198,6 +198,7 @@ bool SemanticInformation::invalidInPureFunctions(Instruction _instruction) case Instruction::ORIGIN: case Instruction::CALLER: case Instruction::CALLVALUE: + case Instruction::GAS: case Instruction::GASPRICE: case Instruction::EXTCODESIZE: case Instruction::EXTCODECOPY: @@ -223,7 +224,6 @@ bool SemanticInformation::invalidInViewFunctions(Instruction _instruction) case Instruction::SSTORE: case Instruction::JUMP: case Instruction::JUMPI: - case Instruction::GAS: case Instruction::LOG0: case Instruction::LOG1: case Instruction::LOG2: diff --git a/test/libsolidity/ViewPureChecker.cpp b/test/libsolidity/ViewPureChecker.cpp index 80241519..6353ae8a 100644 --- a/test/libsolidity/ViewPureChecker.cpp +++ b/test/libsolidity/ViewPureChecker.cpp @@ -349,7 +349,7 @@ BOOST_AUTO_TEST_CASE(assembly) assembly { x := 7 } } function g() view public { - assembly { for {} 1 { pop(sload(0)) } { } } + assembly { for {} 1 { pop(sload(0)) } { } pop(gas) } } function h() view public { assembly { function g() { pop(blockhash(20)) } } @@ -357,6 +357,9 @@ BOOST_AUTO_TEST_CASE(assembly) function j() public { assembly { pop(call(0, 1, 2, 3, 4, 5, 6)) } } + function k() public { + assembly { pop(call(gas, 1, 2, 3, 4, 5, 6)) } + } } )"; CHECK_SUCCESS_NO_WARNINGS(text); @@ -367,7 +370,7 @@ BOOST_AUTO_TEST_CASE(assembly_staticcall) string text = R"( contract C { function i() view public { - assembly { pop(staticcall(0, 1, 2, 3, 4, 5)) } + assembly { pop(staticcall(gas, 1, 2, 3, 4, 5)) } } } )"; |