diff --git a/docs/types/value-types.rst b/docs/types/value-types.rst index ea4a6b9d4..ee94ed60a 100644 --- a/docs/types/value-types.rst +++ b/docs/types/value-types.rst @@ -663,6 +663,16 @@ Note that public functions of the current contract can be used both as an internal and as an external function. To use ``f`` as an internal function, just use ``f``, if you want to use its external form, use ``this.f``. +A function of an internal type can be assigned to a variable of an internal function type regardless +of where it is defined. +This includes private, internal and public functions of both contracts and libraries as well as free +functions. +External function types, on the other hand, are only compatible with public and external contract +functions. +Libraries are excluded because they require a ``delegatecall`` and use :ref:`a different ABI +convention for their selectors `. +Functions declared in interfaces do not have definitions so pointing at them does not make sense either. + Members: External (or public) functions have the following members: