solidity icon indicating copy to clipboard operation
solidity copied to clipboard

Unsupported features

Open dddejan opened this issue 6 years ago • 0 comments
trafficstars

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

dddejan avatar May 27 '19 15:05 dddejan