diff options
author | chriseth <chris@ethereum.org> | 2018-04-19 22:10:15 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-19 22:10:15 +0800 |
commit | 2546a274ca4ea8cae221945a88f2f069c09180b0 (patch) | |
tree | 4419590b3dc135383e39cd353c90739a37d84ee8 | |
parent | 6f0fbcf8b41880c77e8abebb0625ab35290ba2c9 (diff) | |
parent | 754d79edfabd8a199a51411a865d75274fcb4169 (diff) | |
download | dexon-solidity-2546a274ca4ea8cae221945a88f2f069c09180b0.tar.gz dexon-solidity-2546a274ca4ea8cae221945a88f2f069c09180b0.tar.zst dexon-solidity-2546a274ca4ea8cae221945a88f2f069c09180b0.zip |
Merge pull request #3941 from ethereum/bytes-contract
Disallow explicit conversion of bytesXX to contract
-rw-r--r-- | Changelog.md | 1 | ||||
-rw-r--r-- | libsolidity/ast/Types.cpp | 1 | ||||
-rw-r--r-- | test/libsolidity/syntaxTests/types/bytes_to_contract.sol | 7 |
3 files changed, 8 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md index 3922c641..c5bad5aa 100644 --- a/Changelog.md +++ b/Changelog.md @@ -9,6 +9,7 @@ Bugfixes: * Type Checker: Improve error message for failed function overload resolution. * Type Checker: Do not complain about new-style constructor and fallback function to have the same name. * Type Checker: Detect multiple constructor declarations in the new syntax and old syntax. + * Type Checker: Explicit conversion of ``bytesXX`` to ``contract`` is properly disallowed. ### 0.4.22 (2018-04-16) diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 51739cb0..425e5045 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -1299,7 +1299,6 @@ bool FixedBytesType::isExplicitlyConvertibleTo(Type const& _convertTo) const { return _convertTo.category() == Category::Integer || _convertTo.category() == Category::FixedPoint || - _convertTo.category() == Category::Contract || _convertTo.category() == category(); } diff --git a/test/libsolidity/syntaxTests/types/bytes_to_contract.sol b/test/libsolidity/syntaxTests/types/bytes_to_contract.sol new file mode 100644 index 00000000..2a3219ec --- /dev/null +++ b/test/libsolidity/syntaxTests/types/bytes_to_contract.sol @@ -0,0 +1,7 @@ +contract C { + function f() public pure { + C(bytes20(0x1234)); + } +} +// ---- +// TypeError: (64-82): Explicit type conversion not allowed from "bytes20" to "contract C". |