This bounty is no longer available
Web3 DAO | Ethereum Foundation Logo

Private function names should not be checked for uniqueness when inherited by other contracts


Ethereum Foundation






Closes #11889.

## Abstract

Private functions are isolated to the specific contract they are defined in. This holds true during inheritance as well. A contract that inherits another contract cannot use or access private functions from the parent contract. In cases where a contract inherits two separate contracts that each contain the same private function name, there should be no compilation error due to naming conflicts.

## Motivation

Because inheriting contracts cannot use or access the private functions of parent contracts, enforcing uniqueness of these private function names is unnecessarily restrictive.

An example of how this can happen is explained here

## Specification

  1. Update the ambiguous overrides checking function in OverrideChecker to track the scope of functions when comparing them for uniqueness.

  2. Write tests for that case here

## Backwards Compatibility

This change makes solidity compilation strictly more permissive and should not introduce any incompatibilities with existing contracts.