Skip to content

Unsupported features  #1

Open
Open
@dddejan

Description

@dddejan

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions