diff options
author | Daniel Kirchner <daniel@ekpyron.org> | 2018-11-06 21:33:53 +0800 |
---|---|---|
committer | Daniel Kirchner <daniel@ekpyron.org> | 2018-11-07 23:44:35 +0800 |
commit | 8b2f8b1ea27450c7ceec14d32e6afb31598c148c (patch) | |
tree | 9a90f8e5b0a2b569a64e122570523b19535f3912 | |
parent | 88aee34c22d86a004848ae8bdc818b5168dd94cb (diff) | |
download | dexon-solidity-8b2f8b1ea27450c7ceec14d32e6afb31598c148c.tar.gz dexon-solidity-8b2f8b1ea27450c7ceec14d32e6afb31598c148c.tar.zst dexon-solidity-8b2f8b1ea27450c7ceec14d32e6afb31598c148c.zip |
Document disallowed explicit conversions between unrelated contract types.
-rw-r--r-- | docs/050-breaking-changes.rst | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/docs/050-breaking-changes.rst b/docs/050-breaking-changes.rst index 7b227297..0c931553 100644 --- a/docs/050-breaking-changes.rst +++ b/docs/050-breaking-changes.rst @@ -101,6 +101,14 @@ For most of the topics the compiler will provide suggestions. ``c.transfer(...)`` to ``address(c).transfer(...)``, and ``c.balance`` to ``address(c).balance``. +* Explicit conversions between unrelated contract types are now disallowed. You can only + convert from a contract type to one of its base or ancestor types. If you are sure that + a contract is compatible with the contract type you want to convert to, although it does not + inherit from it, you can work around this by converting to ``address`` first. + Example: if ``A`` and ``B`` are contract types, ``B`` does not inherit from ``A`` and + ``b`` is a contract of type ``B``, you can still convert ``b`` to type ``A`` using ``A(address(b))``. + Note that you still need to watch out for matching payable fallback functions, as explained below. + * The ``address`` type was split into ``address`` and ``address payable``, where only ``address payable`` provides the ``transfer`` function. An ``address payable`` can be directly converted to an ``address``, but the |