From b52f23614601652a99ec6c27aec77bd327363b31 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 5 Aug 2022 20:24:53 +0200 Subject: [PATCH] Implement Discriminator trait for generated instructions Access to the discriminators is useful when doing instruction introspection where you may want to determine the type of other instructions for your program. --- lang/syn/src/codegen/program/instruction.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lang/syn/src/codegen/program/instruction.rs b/lang/syn/src/codegen/program/instruction.rs index 9191d05d..9052ad88 100644 --- a/lang/syn/src/codegen/program/instruction.rs +++ b/lang/syn/src/codegen/program/instruction.rs @@ -138,6 +138,11 @@ pub fn generate(program: &Program) -> proc_macro2::TokenStream { let sighash_tts: proc_macro2::TokenStream = format!("{:?}", sighash_arr).parse().unwrap(); quote! { + impl anchor_lang::Discriminator for #ix_name_camel { + fn discriminator() -> [u8; 8] { + #sighash_tts + } + } impl anchor_lang::InstructionData for #ix_name_camel { fn data(&self) -> Vec { let mut d = #sighash_tts.to_vec();