use revm::{
context::{BlockEnv, CfgEnv, TxEnv},
context_interface::context::ContextError,
handler::{instructions::EthInstructions, EthFrame, EthPrecompiles},
inspector::NoOpInspector,
interpreter::{interpreter::EthInterpreter, InstructionContext, InterpreterTypes},
Context, Database, Journal,
};
pub type Ctx<Db, J = Journal<Db>, C = ()> = Context<BlockEnv, TxEnv, CfgEnv, Db, J, C>;
pub type Evm<Db, Insp = NoOpInspector, Inst = Instructions<Db>, Prec = EthPrecompiles> =
revm::context::Evm<Ctx<Db>, Insp, Inst, Prec, EthFrame>;
pub type Instructions<Db> = EthInstructions<EthInterpreter, Ctx<Db>>;
pub type Instruction<Db> = revm::interpreter::Instruction<EthInterpreter, Ctx<Db>>;
pub fn forbidden<Db: Database, Int: InterpreterTypes>(ctx: InstructionContext<'_, Ctx<Db>, Int>) {
ctx.host.error = Err(ContextError::Custom("forbidden opcode".to_string()));
}