diff options
author | chriseth <chris@ethereum.org> | 2018-01-30 03:06:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-30 03:06:02 +0800 |
commit | cc1c461fc05255f0efc3a36f6c90336092c66aae (patch) | |
tree | 4806779c50b3b2d2b35a79a82e07e9deb2328f4e | |
parent | bd3692f1e69c3c1954c09bd7cb964b5e62450989 (diff) | |
parent | b517ebb8bcb9494a55ecbcc0ea99b1e372d1219a (diff) | |
download | dexon-solidity-cc1c461fc05255f0efc3a36f6c90336092c66aae.tar.gz dexon-solidity-cc1c461fc05255f0efc3a36f6c90336092c66aae.tar.zst dexon-solidity-cc1c461fc05255f0efc3a36f6c90336092c66aae.zip |
Merge pull request #3447 from fulldecent/patch-7
Fix new Solidity warnings, for #3379
-rw-r--r-- | docs/assembly.rst | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/docs/assembly.rst b/docs/assembly.rst index 825892b3..afc44d66 100644 --- a/docs/assembly.rst +++ b/docs/assembly.rst @@ -54,7 +54,7 @@ idea is that assembly libraries will be used to enhance the language in such way pragma solidity ^0.4.0; library GetCode { - function at(address _addr) public returns (bytes o_code) { + function at(address _addr) public view returns (bytes o_code) { assembly { // retrieve the size of the code, this needs assembly let size := extcodesize(_addr) @@ -78,12 +78,12 @@ you really know what you are doing. .. code:: - pragma solidity ^0.4.12; + pragma solidity ^0.4.16; library VectorSum { // This function is less efficient because the optimizer currently fails to // remove the bounds checks in array access. - function sumSolidity(uint[] _data) public returns (uint o_sum) { + function sumSolidity(uint[] _data) public view returns (uint o_sum) { for (uint i = 0; i < _data.length; ++i) o_sum += _data[i]; } @@ -91,7 +91,7 @@ you really know what you are doing. // We know that we only access the array in bounds, so we can avoid the check. // 0x20 needs to be added to an array because the first slot contains the // array length. - function sumAsm(uint[] _data) public returns (uint o_sum) { + function sumAsm(uint[] _data) public view returns (uint o_sum) { for (uint i = 0; i < _data.length; ++i) { assembly { o_sum := add(o_sum, mload(add(add(_data, 0x20), mul(i, 0x20)))) @@ -100,7 +100,7 @@ you really know what you are doing. } // Same as above, but accomplish the entire code within inline assembly. - function sumPureAsm(uint[] _data) public returns (uint o_sum) { + function sumPureAsm(uint[] _data) public view returns (uint o_sum) { assembly { // Load the length (first 32 bytes) let len := mload(_data) @@ -459,10 +459,10 @@ be just ``0``, but it can also be a complex functional-style expression. .. code:: - pragma solidity ^0.4.0; + pragma solidity ^0.4.16; contract C { - function f(uint x) public returns (uint b) { + function f(uint x) public view returns (uint b) { assembly { let v := add(x, 1) mstore(0x80, v) @@ -710,10 +710,10 @@ Example: We will follow an example compilation from Solidity to desugared assembly. We consider the runtime bytecode of the following Solidity program:: - pragma solidity ^0.4.0; + pragma solidity ^0.4.16; contract C { - function f(uint x) public returns (uint y) { + function f(uint x) public pure returns (uint y) { y = 1; for (uint i = 0; i < x; i++) y = 2 * y; |