Solidity: In 0.4.12 declaring a storage pointer to a non-existent identifier throws an exception

Created on 5 Jul 2017  路  7Comments  路  Source: ethereum/solidity

When compiling something like:

pragma solidity ^0.4.12;

contract C {
    function f() {
        uint[] x = inexistentIdentifier;
        x.push(1);
    }
}

In Remix the 0.4.12-release compiler version throws this exception:

Internal exception in StandardCompiler::compileInternal: /src/libsolidity/ast/ASTJsonConverter.cpp(791): Throw in function string dev::solidity::ASTJsonConverter::functionCallKind(dev::solidity::FunctionCallKind)
Dynamic exception type: N5boost16exception_detail10clone_implIN3dev8solidity21InternalCompilerErrorEEE
std::exception::what: std::exception
[PN3dev11tag_commentE] = Unknown kind of function call .

Expected behaviour would be:
Undeclared identifier.

If no member of x is used, though, the exception is not thrown.

bug

Most helpful comment

Yes, this issue also has a pending fix already. We try to make a bugfix release as soon as possible.

All 7 comments

Wonderful, we were looking for this bug! Strangely, I cannot reproduce that with latest develop.

.. but I can reproduce it on remix as you say.

Going to try locally with last develop, too.

EDIT: Just built 0.4.13-develop.2017.7.5+commit.05a26fc9.Darwin.appleclang from source and it does error properly:
contract.sol:10:20: Error: Undeclared identifier.

Also on another note, 0.4.12 changelog says:

Inline Assembly: Warn when using `jump`s.

But Remix presents an error and prevents compilation of the contracts.

Should I open another issue?

This issue is fine, the component is certainly solidity. Why do you think the inline assembly change is related?

Sorry for the confusion! I meant "on a totally unrelated note:"! 馃槃

That's a different issue where Remix is not treating inline assembly jumps as a warning but as an error which prevents compilation altogether.

Yes, this issue also has a pending fix already. We try to make a bugfix release as soon as possible.

Was this page helpful?
0 / 5 - 0 ratings