Details
Here, my Escrow contract needs Test1 and Test2 contracts for some functionalities. Both of Test1 and Test2 needs for some reason to inherit from Can contract (could be OwnableUpgradeable from OZ upgradeable contracts). How does Solidity handle this ? Is this related to the known multiple inheritance issue when dealing with upgradable contracts ?
Code:
// SPDX-License-Identifier: SEE LICENSE IN LICENSE
pragma experimental ABIEncoderV2;
pragma solidity 0.6.12;
import "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol";
contract Can is Initializable {
function __Can_init() internal virtual initializer {}
}
contract Test1 is Initializable, Can {
function __Test1_init() internal virtual initializer {
__Can_init();
//
}
}
contract Test2 is Initializable, Can {
function __Test2_init() internal virtual initializer {
__Can_init();
//
}
}
contract Escrow is Initializable, Test1, Test2 {
//
address admin;
//
function initialize(address _admin) public initializer {
__Test1_init();
__Test2_init();
admin = _admin;
}
}