argotorg/solidity

Should private functions really clash ?

Offen

#11.889 geöffnet am 03.09.2021

 (45 Kommentare) (6 Reaktionen) (0 zugewiesene Personen)C++ (6.109 Forks)batch import
bounty worthy :moneybag:help wantedlow effortlow impactnice to have

Repository-Metriken

Stars
 (25.634 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 8T 8h) (30 gemergte PRs in 30 T)

Beschreibung

Let consider the following code:

contract A {
    function __myPrivateFunction() private {
        // Does something usefull
    }
    
    function callA() public {
        __myPrivateFunction();
    }
}

contract B {
    function __myPrivateFunction() private {
        // Does something usefull
    }
    
    function callB() public {
        __myPrivateFunction();
    }
}

contract AB is A, B {}

What I am expecting

implementation of __myPrivateFunction are private, and they only make sense in the context of the contract that they are part of (A and B). They are not accessible from AB, so it is not like if a call from a function within AB wouldn't be resolvable.

IMO, this should compile, possibly with a warning, but not with an error.

What happens

I get an error:

TypeError: Derived contract must override function "__myPrivateFunction". Two or more base classes define function with same name and parameter types.

Question/Request

Is that behaviour wanted? needed? Whould it be possible to accept this kind of ghost-conflicts?

Contributor Guide