Private functions not overridden by other contracts #14357
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #11889
Suggested fix for preventing error about overriding private functions by inheriting/other contracts. The fix is based on the previous suggested fix by PR #13328, with the enhancements required by @ekpyron in that PR to make sure during code generation that private functions are not used by other contracts. For that, a new
origCallingContract
item was added toFunctionCallAnnotation
, that points to the contract that calls the function. This field is used to verify that a private function is called by the defining contract, instead of usingmostDerivedContract
, since in case of a contract calling internal library function that calls a library's private function,mostDerivedContract
points to the contract and not the library.The test cases are practically the same as suggested by in PR #13328.