Defining structs like `RoleData` is not yet supported

When using the most recent package version and the ERC20PresetMinterPauserUpgradeable preset, I still get the same error:

Error: Contract `MyToken` is not upgrade safe

@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:56: Defining structs like `RoleData` is not yet supported
    If you have manually checked for storage layout compatibility, you can skip this check with the `unsafeAllowCustomTypes` flag

Any solutions for this?


Are you using the flag mentioned in the error message?

The latest version doesn’t support validating structs yet and this affects some of the contracts in OpenZeppelin Contracts.

Automatic struct validation is coming, it should be out next week.


Hi @platocrat. It took a bit longer than a week, sorry about that, but the latest release of the upgrades plugin supports structs fully and automatically checks that upgrades are safe. Take a look at the announcement below!

1 Like