TLDR: Testing stepwise ugrade of wizard contracts (adding features and upgrading) I found that if I modified the "is" clause, given by the wizard, to have the new feature contract appended the the end of the "is" clause I could deploy the upgrade.
Is this OK?
UUPS ERC20: Initial deploy OK
Upgrade to ERC20+Mintable: Upgrade deployed OK
Upgrade to ERC20+Mintable+Burnable: Will not deploy upgrade.Variable storage clash.
UUPS ERC20+Mintable+Burnable: Initial deploy OK
Upgrade to UUPS ERC20+Mintable+Burnable+Pausable: Will not deploy upgrade. Variable storage clash.
After moving PausableUpgradeable to the end of the "is" clause and recompiling I could deploy the upgrade.
contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, PausableUpgradeable, OwnableUpgradeable, UUPSUpgradeable
To
contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, OwnableUpgradeable, UUPSUpgradeable, PausableUpgradeable
I verified contract variable storage by inspecting the corresponding json file under the artifacts/build-info directory.
Hopefully stepwise upgrading using the wizard, then modifying the "is" clause, as needed, when adding features will not impose problems.
Again, anyone see any problems with this?
Cheers