aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2016-11-09 21:15:01 +0800
committerchriseth <c@ethdev.com>2016-11-16 21:37:18 +0800
commitf7a62c1e69e98cc612b7ed98497260b38234a162 (patch)
tree36db42509fe7e318e6c053e649921956c5822b44
parente1df3bd77f78d5564fc173474015e5d84b192824 (diff)
downloaddexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar.gz
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar.bz2
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar.lz
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar.xz
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.tar.zst
dexon-solidity-f7a62c1e69e98cc612b7ed98497260b38234a162.zip
Mention "payable" in the documentation.
-rw-r--r--docs/types.rst9
-rw-r--r--libsolidity/grammar.txt4
2 files changed, 9 insertions, 4 deletions
diff --git a/docs/types.rst b/docs/types.rst
index 1673c30d..7f4570ed 100644
--- a/docs/types.rst
+++ b/docs/types.rst
@@ -291,7 +291,7 @@ be passed via and returned from external function calls.
Function types are notated as follows:
- function (<parameter types>) {internal|external} [constant] [returns (<return types>)]
+ function (<parameter types>) {internal|external} [constant] [payable] [returns (<return types>)]
In contrast to the parameter types, the return types cannot be empty - if the
function type should not return anything, the whole ``returns (<return types>)``
@@ -300,8 +300,13 @@ part has to be omitted.
By default, function types are internal, so the ``internal`` keyword can be
omitted.
+There are two ways to access a function in the current contract: Either directly
+by its name, ``f``, or using ``this.f``. The former will result in an internal
+function, the latter in an external function.
+
If a function type variable is not initialized, calling it will result
-in an exception.
+in an exception. The same happens if you call a function after using ``delete``
+on it.
If external function types are used outside of the context of Solidity,
they are converted into the ``bytes24`` type.
diff --git a/libsolidity/grammar.txt b/libsolidity/grammar.txt
index cfa779ec..c8bc3aed 100644
--- a/libsolidity/grammar.txt
+++ b/libsolidity/grammar.txt
@@ -22,7 +22,7 @@ StructDefinition = 'struct' Identifier '{'
( VariableDeclaration ';' (VariableDeclaration ';')* )? '}'
ModifierDefinition = 'modifier' Identifier ParameterList? Block
FunctionDefinition = 'function' Identifier? ParameterList
- ( FunctionCall | Identifier | 'constant' | 'external' | 'public' | 'internal' | 'private' )*
+ ( FunctionCall | Identifier | 'constant' |' payable' | 'external' | 'public' | 'internal' | 'private' )*
( 'returns' ParameterList )? Block
EventDefinition = 'event' Identifier IndexedParameterList 'anonymous'? ';'
@@ -39,7 +39,7 @@ VariableDeclaration = TypeName Identifier
TypeName = ElementaryTypeName | Identifier StorageLocation? | Mapping | ArrayTypeName | FunctionTypeName
Mapping = 'mapping' '(' ElementaryTypeName '=>' TypeName ')'
ArrayTypeName = TypeName StorageLocation? '[' Expression? ']'
-FunctionTypeName = 'function' TypeNameList ( 'internal' | 'external' | 'constant' )*
+FunctionTypeName = 'function' TypeNameList ( 'internal' | 'external' | 'constant' | 'payable' )*
( 'returns' TypeNameList )?
StorageLocation = 'memory' | 'storage'