From 6ece0d6c2f689de2dc82a31cea8625f168346b44 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 15 Mar 2017 23:50:58 +0000 Subject: Document the .value() and .gas() modifiers --- docs/control-structures.rst | 6 +++--- docs/types.rst | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'docs') diff --git a/docs/control-structures.rst b/docs/control-structures.rst index a3af41dd..b1e16644 100644 --- a/docs/control-structures.rst +++ b/docs/control-structures.rst @@ -113,8 +113,8 @@ actual contract has not been created yet. Functions of other contracts have to be called externally. For an external call, all function arguments have to be copied to memory. -When calling functions -of other contracts, the amount of Wei sent with the call and the gas can be specified:: +When calling functions of other contracts, the amount of Wei sent with the call and +the gas can be specified with special options ``.value()`` and ``.gas()``, respectively:: contract InfoFeed { function info() payable returns (uint ret) { return 42; } @@ -235,7 +235,7 @@ creation-dependencies are not possible. } } -As seen in the example, it is possible to forward Ether to the creation, +As seen in the example, it is possible to forward Ether to the creation using the ``.value()`` option, but it is not possible to limit the amount of gas. If the creation fails (due to out-of-stack, not enough balance or other problems), an exception is thrown. diff --git a/docs/types.rst b/docs/types.rst index 6379f01c..60235ad2 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -123,6 +123,8 @@ In a similar way, the function ``delegatecall`` can be used: The difference is t All three functions ``call``, ``delegatecall`` and ``callcode`` are very low-level functions and should only be used as a *last resort* as they break the type-safety of Solidity. +The ``.gas()`` option is available on all three methods, while the ``.value()`` option is not supported for ``delegatecall``. + .. note:: All contracts inherit the members of address, so it is possible to query the balance of the current contract using ``this.balance``. -- cgit From 17443f458a311def7131dcaef00195dff3778da1 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 16 Mar 2017 11:08:21 +0000 Subject: Explain that .value() is only available if contract function is marked payable --- docs/control-structures.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/control-structures.rst b/docs/control-structures.rst index b1e16644..a2d34274 100644 --- a/docs/control-structures.rst +++ b/docs/control-structures.rst @@ -127,8 +127,8 @@ the gas can be specified with special options ``.value()`` and ``.gas()``, respe function callFeed() { feed.info.value(10).gas(800)(); } } -The modifier ``payable`` has to be used for ``info``, because otherwise, -we would not be able to send Ether to it in the call ``feed.info.value(10).gas(800)()``. +The modifier ``payable`` has to be used for ``info``, because otherwise, the `.value()` +option would not be available. Note that the expression ``InfoFeed(addr)`` performs an explicit type conversion stating that "we know that the type of the contract at the given address is ``InfoFeed``" and -- cgit