Update tests for interface inheritance

This commit is contained in:
Jason Cobb
2020-01-22 09:40:40 -05:00
parent 573a054d5d
commit 595f569e97
14 changed files with 196 additions and 2 deletions
@@ -0,0 +1,39 @@
interface Parent {
function parentFun() external returns (uint256);
}
interface SubA is Parent {
function subAFun() external returns (uint256);
}
interface SubB is Parent {
function subBFun() external returns (uint256);
}
contract Impl is SubA, SubB {
function parentFun() override external returns (uint256) { return 1; }
function subAFun() override external returns (uint256) { return 2; }
function subBFun() override external returns (uint256) { return 3; }
}
contract C {
function convertParent() public returns (uint256) {
Parent p = new Impl();
return p.parentFun();
}
function convertSubA() public returns (uint256, uint256) {
SubA sa = new Impl();
return (sa.parentFun(), sa.subAFun());
}
function convertSubB() public returns (uint256, uint256) {
SubB sb = new Impl();
return (sb.parentFun(), sb.subBFun());
}
}
// ----
// convertParent() -> 1
// convertSubA() -> 1, 2
// convertSubB() -> 1, 3