Description
This issues tracks all yet unsupported features, with notes.
Fixes or discussion for individual issues in separate issues.
Solidity Features
Function types
Error: Boogie error: Unsupported type: 'function'
test/libsolidity/syntaxTests/bound/bound_all.sol
Error: Error: undeclared identifier: f#11
test/libsolidity/syntaxTests/functionTypes/external_function_type_to_address.sol
Delete
Error: Boogie error: Unsupported unary operator: delete
Type information
type(X).creationCode
type(X).runtimeCode
type(X).name
Error: Boogie error: Unsupported type: 'type(contract'
Error: Boogie error: Member without corresponding declaration (probably an unsupported special member)
test/libsolidity/syntaxTests/metaTypes/codeAccessIsConstant.sol
Fixedpoint type
test/libsolidity/syntaxTests/types/rational_number_literal_to_fixed_implicit.sol
ufixed8x2 a = 0.10;
fixed8x1 a = 0.1;
Error: Dynamic exception type: boost::wrapexcept<langutil::UnimplementedFeatureError>
Abi.*: decode, encodePacked, encodeWithSelector, encodeWithSignature
function f(bytes memory b) public pure returns (address payable) {
(address payable c) = abi.decode(b, (address));
return c;
}
test/libsolidity/syntaxTests/types/address/address_abi_decode.sol
Error: Boogie internal exception: Unhandled node: ElementaryTypeNameExpression
test/libsolidity/syntaxTests/specialFunctions/types_without_encoding_problems.sol
Error: Boogie error: Member without corresponding declaration (probably an unsupported special member)
test/libsolidity/syntaxTests/specialFunctions/abidecode/abi_decode_memory_v2.sol
Inline assembly
assembly { }
Error: Boogie error: Inline assembly is not supported
Complex selectors
contract C {
function f() payable public returns (C) {
return this;
}
function g() pure public returns (bytes4) {
C x = C(0x123);
return x.f.selector;
}
}
test/libsolidity/syntaxTests/viewPureChecker/selector_complex2.sol
test/libsolidity/syntaxTests/conversion/function_type_pure_nonpayable.sol
Error: Boogie error: Member without corresponding declaration (probably an unsupported special member)
Delegatecall
(bool success,) = address(this).delegatecall("");
Error: Boogie error: Member without corresponding declaration (probably an unsupported special member)
Operations not supported in integer encoding
return 10 << x;
return 10**x;
Error: Boogie error: Unsupported binary operator in 'int' encoding <<
Error: Boogie error: Exponentiation is not supported in 'int' encoding
Unsupported type conversions
bytes(s)
string(b)
test/libsolidity/syntaxTests/nameAndTypeResolution/224_string_bytes_conversion.sol
Errror: Boogie error: Unsupported type conversion
Specification Features
_verifier_count over elements of a mapping
e.g.:
we have the following map:
mapping (address => bool) confirmations
and we would like to count the number of elements addr
in confirmations such that confirmations[addr] == true