ethereum / remix-project

Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
https://remix-ide.readthedocs.io
MIT License
2.42k stars 926 forks source link

This contract does not implement all functions and thus cannot be created. #138

Open mikgross opened 6 years ago

mikgross commented 6 years ago

Would it be possible to implement something to pinpoint us in the right direction when debugging this issue? Smart contracts can get very complicated and intricated with one contract feeding on various interfaces. It would be a VERY useful too to implement.

LianaHus commented 4 years ago

isn't this handled by compiler @yann300 ?

yann300 commented 4 years ago

First we could remove them from the list (run tab).

In the other hand we could have a plugin which will analyze the contract and by looking at inheritance tell us which functions need to be implemented.

cameel commented 2 years ago

I think this has been fixed in https://github.com/ethereum/solidity/issues/3594 (released in 0.6.0).

Later versions of the compiler do point out the unimplemented functions:

interface I {
    function f() external;
    function g() external;
}

contract C is I {}
Error: Contract "C" should be marked as abstract.
 --> test.sol:6:1:
  |
6 | contract C is I {}
  | ^^^^^^^^^^^^^^^^^^
Note: Missing implementation:
 --> test.sol:2:5:
  |
2 |     function f() external;
  |     ^^^^^^^^^^^^^^^^^^^^^^
Note: Missing implementation:
 --> test.sol:3:5:
  |
3 |     function g() external;
  |     ^^^^^^^^^^^^^^^^^^^^^^

and Remix does display that information. It could be more readable (#1601) but at least it's all there: remix-should-be-marked-as-abstract-error