I am testing simple ERC20 token creation with the following in remix:
pragma solidity ^0.5.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0/contracts/token/ERC20/ERC20.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.4.0/contracts/token/ERC20/ERC20Detailed.sol";
contract TestToken is ERC20, ERC20Detailed {
constructor () public ERC20Detailed("TestToken", "TKN", 18) {
_mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
}
}
I launch the contract and debug, but prior to every JUMP opcode, i receive an INVALID opcode in remix debugger.
If we look at _mint call in the stack trace (opcode 250 on compiler 0.5.13):
PUSH1 20
INVALID
JUMP
JUMPDEST
Is this merely a parse error or is every jump have an invalid opcode now? How can one discern this from an OPCODE used as an error?