From 75eb47777b54738a3c13844f0d7ede659b7a2d95 Mon Sep 17 00:00:00 2001 From: ananas Date: Wed, 4 Feb 2026 01:34:41 +0000 Subject: [PATCH 1/2] fix: expected macro deps --- .../macros/src/light_pdas/accounts/variant.rs | 4 +- .../src/light_pdas/program/decompress.rs | 28 ++++++++++++-- .../src/light_pdas/program/instructions.rs | 6 ++- .../src/light_pdas/program/seed_codegen.rs | 36 +++++++++++++----- .../src/light_pdas/program/seed_utils.rs | 11 +++++- .../src/light_pdas/program/variant_enum.rs | 14 +++---- .../macros/src/light_pdas/program/visitors.rs | 37 ++++++++++++++----- .../pinocchio-light-program-test/Cargo.toml | 20 +++++----- .../src/account_loader/processor.rs | 8 ++-- .../src/all/processor.rs | 12 +++--- .../pinocchio-light-program-test/src/lib.rs | 3 +- .../src/pda/processor.rs | 8 ++-- 12 files changed, 121 insertions(+), 66 deletions(-) diff --git a/sdk-libs/macros/src/light_pdas/accounts/variant.rs b/sdk-libs/macros/src/light_pdas/accounts/variant.rs index 3b231a9811..1a8ae3fa9e 100644 --- a/sdk-libs/macros/src/light_pdas/accounts/variant.rs +++ b/sdk-libs/macros/src/light_pdas/accounts/variant.rs @@ -330,7 +330,7 @@ impl VariantBuilder { quote! { #[cfg(not(target_os = "solana"))] - impl light_account_pinocchio::Pack for #variant_name { + impl light_account_pinocchio::Pack for #variant_name { type Packed = #packed_variant_name; fn pack( @@ -482,7 +482,7 @@ impl VariantBuilder { let field = &sf.field_name; if sf.is_account_seed { let idx_field = format_ident!("{}_idx", field); - quote! { #idx_field: accounts.insert_or_get(solana_pubkey::Pubkey::from(self.seeds.#field)) } + quote! { #idx_field: accounts.insert_or_get(light_account_pinocchio::solana_pubkey::Pubkey::from(self.seeds.#field)) } } else if sf.has_le_bytes { quote! { #field: self.seeds.#field.to_le_bytes() } } else { diff --git a/sdk-libs/macros/src/light_pdas/program/decompress.rs b/sdk-libs/macros/src/light_pdas/program/decompress.rs index dadbbb24f3..c3668631f4 100644 --- a/sdk-libs/macros/src/light_pdas/program/decompress.rs +++ b/sdk-libs/macros/src/light_pdas/program/decompress.rs @@ -302,7 +302,11 @@ impl DecompressBuilder { let ctx_fields_decl: Vec<_> = ctx_fields .iter() .map(|field| { - quote! { pub #field: solana_pubkey::Pubkey } + if is_pinocchio { + quote! { pub #field: [u8; 32] } + } else { + quote! { pub #field: solana_pubkey::Pubkey } + } }) .collect(); @@ -613,11 +617,27 @@ fn generate_pda_seed_derivation_for_trait_with_ctx_seeds( let indices: Vec = (0..seed_refs.len()).collect(); + let pda_derivation = if is_pinocchio { + quote! { + let (pda, bump) = pinocchio::pubkey::find_program_address(seeds, program_id); + } + } else { + quote! { + let program_id_pubkey = solana_pubkey::Pubkey::from(*program_id); + let (pda, bump) = solana_pubkey::Pubkey::find_program_address(seeds, &program_id_pubkey); + } + }; + + let pda_to_bytes = if is_pinocchio { + quote! { pda } + } else { + quote! { pda.to_bytes() } + }; + Ok(quote! { #(#bindings)* let seeds: &[&[u8]] = &[#(#seed_refs,)*]; - let program_id_pubkey = solana_pubkey::Pubkey::from(*program_id); - let (pda, bump) = solana_pubkey::Pubkey::find_program_address(seeds, &program_id_pubkey); + #pda_derivation let mut seeds_vec = Vec::with_capacity(seeds.len() + 1); #( seeds_vec.push(seeds[#indices].to_vec()); @@ -628,7 +648,7 @@ fn generate_pda_seed_derivation_for_trait_with_ctx_seeds( bump_vec.push(bump); seeds_vec.push(bump_vec); } - Ok((seeds_vec, pda.to_bytes())) + Ok((seeds_vec, #pda_to_bytes)) }) } diff --git a/sdk-libs/macros/src/light_pdas/program/instructions.rs b/sdk-libs/macros/src/light_pdas/program/instructions.rs index a67d26bf72..20691f874a 100644 --- a/sdk-libs/macros/src/light_pdas/program/instructions.rs +++ b/sdk-libs/macros/src/light_pdas/program/instructions.rs @@ -569,6 +569,7 @@ pub(crate) fn generate_light_program_items( &pda_seeds, &token_seeds, &instruction_data, + false, // Anchor (not pinocchio) )?; // Collect all generated items into a Vec @@ -1286,16 +1287,17 @@ pub(crate) fn generate_light_program_pinocchio_items( pub write_top_up: u32, pub rent_sponsor: [u8; 32], pub compression_authority: [u8; 32], - pub rent_config: light_compressible::rent::RentConfig, + pub rent_config: light_account_pinocchio::rent::RentConfig, pub address_space: Vec<[u8; 32]>, } }; - // Client functions (module + pub use - framework-agnostic) + // Client functions (module + pub use - pinocchio uses light_account_pinocchio re-exports) let client_functions = super::seed_codegen::generate_client_seed_functions( &pda_seeds, &token_seeds, &instruction_data, + true, // Pinocchio )?; // Collect all generated items diff --git a/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs b/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs index 3a205812b1..0068f81b51 100644 --- a/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs +++ b/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs @@ -30,9 +30,17 @@ pub fn generate_client_seed_functions( pda_seeds: &Option>, token_seeds: &Option>, instruction_data: &[InstructionDataSpec], + is_pinocchio: bool, ) -> Result { let mut functions = Vec::new(); + // Choose the correct pubkey path based on framework + let pubkey_path = if is_pinocchio { + quote! { light_account_pinocchio::solana_pubkey::Pubkey } + } else { + quote! { solana_pubkey::Pubkey } + }; + if let Some(pda_seed_specs) = pda_seeds { for spec in pda_seed_specs { let variant_name = &spec.variant; @@ -40,14 +48,15 @@ pub fn generate_client_seed_functions( let function_name = format_ident!("get_{}_seeds", snake_case); let (parameters, seed_expressions) = - analyze_seed_spec_for_client(spec, instruction_data)?; + analyze_seed_spec_for_client(spec, instruction_data, is_pinocchio)?; let fn_body = generate_seed_derivation_body( &seed_expressions, - quote! { &solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id) }, + quote! { &#pubkey_path::from(crate::LIGHT_CPI_SIGNER.program_id) }, + is_pinocchio, ); let function = quote! { - pub fn #function_name(#(#parameters),*) -> (Vec>, solana_pubkey::Pubkey) { + pub fn #function_name(#(#parameters),*) -> (Vec>, #pubkey_path) { #fn_body } }; @@ -63,14 +72,15 @@ pub fn generate_client_seed_functions( format_ident!("get_{}_seeds", variant_name.to_string().to_lowercase()); let (parameters, seed_expressions) = - analyze_seed_spec_for_client(spec, instruction_data)?; + analyze_seed_spec_for_client(spec, instruction_data, is_pinocchio)?; let fn_body = generate_seed_derivation_body( &seed_expressions, - quote! { &solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id) }, + quote! { &#pubkey_path::from(crate::LIGHT_CPI_SIGNER.program_id) }, + is_pinocchio, ); let function = quote! { - pub fn #function_name(#(#parameters),*) -> (Vec>, solana_pubkey::Pubkey) { + pub fn #function_name(#(#parameters),*) -> (Vec>, #pubkey_path) { #fn_body } }; @@ -97,14 +107,15 @@ pub fn generate_client_seed_functions( } let (owner_parameters, owner_seed_expressions) = - analyze_seed_spec_for_client(&owner_seeds_spec, instruction_data)?; + analyze_seed_spec_for_client(&owner_seeds_spec, instruction_data, is_pinocchio)?; let (fn_params, fn_body) = if owner_parameters.is_empty() { ( - quote! { _program_id: &solana_pubkey::Pubkey }, + quote! { _program_id: &#pubkey_path }, generate_seed_derivation_body( &owner_seed_expressions, quote! { _program_id }, + is_pinocchio, ), ) } else { @@ -112,12 +123,13 @@ pub fn generate_client_seed_functions( quote! { #(#owner_parameters),* }, generate_seed_derivation_body( &owner_seed_expressions, - quote! { &solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id) }, + quote! { &#pubkey_path::from(crate::LIGHT_CPI_SIGNER.program_id) }, + is_pinocchio, ), ) }; let owner_seeds_function = quote! { - pub fn #owner_seeds_function_name(#fn_params) -> (Vec>, solana_pubkey::Pubkey) { + pub fn #owner_seeds_function_name(#fn_params) -> (Vec>, #pubkey_path) { #fn_body } }; @@ -127,11 +139,13 @@ pub fn generate_client_seed_functions( } Ok(quote! { + #[cfg(not(target_os = "solana"))] mod __client_seed_functions { use super::*; #(#functions)* } + #[cfg(not(target_os = "solana"))] pub use __client_seed_functions::*; }) } @@ -144,6 +158,7 @@ pub fn generate_client_seed_functions( fn analyze_seed_spec_for_client( spec: &TokenSeedSpec, instruction_data: &[InstructionDataSpec], + is_pinocchio: bool, ) -> Result<(Vec, Vec)> { let mut parameters = Vec::new(); let mut expressions = Vec::new(); @@ -160,6 +175,7 @@ fn analyze_seed_spec_for_client( &mut seen_params, &mut parameters, &mut expressions, + is_pinocchio, )?; } diff --git a/sdk-libs/macros/src/light_pdas/program/seed_utils.rs b/sdk-libs/macros/src/light_pdas/program/seed_utils.rs index 3cae5704fa..2b024787d6 100644 --- a/sdk-libs/macros/src/light_pdas/program/seed_utils.rs +++ b/sdk-libs/macros/src/light_pdas/program/seed_utils.rs @@ -25,15 +25,24 @@ use syn::Ident; pub fn generate_seed_derivation_body( seed_expressions: &[TokenStream], program_id_expr: TokenStream, + is_pinocchio: bool, ) -> TokenStream { let seed_count = seed_expressions.len(); + + // Choose the correct pubkey path based on framework + let pubkey_path = if is_pinocchio { + quote! { light_account_pinocchio::solana_pubkey::Pubkey } + } else { + quote! { solana_pubkey::Pubkey } + }; + quote! { let mut seed_values = Vec::with_capacity(#seed_count + 1); #( seed_values.push((#seed_expressions).to_vec()); )* let seed_slices: Vec<&[u8]> = seed_values.iter().map(|v| v.as_slice()).collect(); - let (pda, bump) = solana_pubkey::Pubkey::find_program_address(&seed_slices, #program_id_expr); + let (pda, bump) = #pubkey_path::find_program_address(&seed_slices, #program_id_expr); seed_values.push(vec![bump]); (seed_values, pda) } diff --git a/sdk-libs/macros/src/light_pdas/program/variant_enum.rs b/sdk-libs/macros/src/light_pdas/program/variant_enum.rs index 2a71f9a0c2..79db49accd 100644 --- a/sdk-libs/macros/src/light_pdas/program/variant_enum.rs +++ b/sdk-libs/macros/src/light_pdas/program/variant_enum.rs @@ -660,7 +660,7 @@ impl<'a> LightVariantBuilder<'a> { .iter() .map(|f| { let idx = format_ident!("{}_idx", f); - quote! { #idx: remaining_accounts.insert_or_get(solana_pubkey::Pubkey::from(self.#f)) } + quote! { #idx: remaining_accounts.insert_or_get(light_account_pinocchio::solana_pubkey::Pubkey::from(self.#f)) } }) .collect(); @@ -710,7 +710,7 @@ impl<'a> LightVariantBuilder<'a> { } #[cfg(not(target_os = "solana"))] - impl light_account_pinocchio::Pack for #seeds_name { + impl light_account_pinocchio::Pack for #seeds_name { type Packed = #packed_seeds_name; fn pack( @@ -718,9 +718,9 @@ impl<'a> LightVariantBuilder<'a> { remaining_accounts: &mut light_account_pinocchio::PackedAccounts, ) -> std::result::Result { let __seeds: &[&[u8]] = &[#(#bump_seed_refs),*]; - let (_, __bump) = solana_pubkey::Pubkey::find_program_address( + let (_, __bump) = light_account_pinocchio::solana_pubkey::Pubkey::find_program_address( __seeds, - &solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id), + &light_account_pinocchio::solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id), ); Ok(#packed_seeds_name { #(#pack_stmts,)* @@ -824,9 +824,9 @@ impl<'a> LightVariantBuilder<'a> { }) .collect(); quote! { - let (__owner, _) = solana_pubkey::Pubkey::find_program_address( + let (__owner, _) = light_account_pinocchio::solana_pubkey::Pubkey::find_program_address( &[#(#owner_seed_refs),*], - &solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id), + &light_account_pinocchio::solana_pubkey::Pubkey::from(crate::LIGHT_CPI_SIGNER.program_id), ); __owner.to_bytes() } @@ -1076,7 +1076,7 @@ impl<'a> LightVariantBuilder<'a> { quote! { #[cfg(not(target_os = "solana"))] - impl light_account_pinocchio::Pack for LightAccountVariant { + impl light_account_pinocchio::Pack for LightAccountVariant { type Packed = PackedLightAccountVariant; fn pack( diff --git a/sdk-libs/macros/src/light_pdas/program/visitors.rs b/sdk-libs/macros/src/light_pdas/program/visitors.rs index cae52fa6c6..6cce9abdbc 100644 --- a/sdk-libs/macros/src/light_pdas/program/visitors.rs +++ b/sdk-libs/macros/src/light_pdas/program/visitors.rs @@ -385,10 +385,18 @@ fn map_call_arg( instruction_data: &[InstructionDataSpec], seen_params: &mut HashSet, parameters: &mut Vec, + is_pinocchio: bool, ) -> syn::Result { + // Choose the correct pubkey path based on framework + let pubkey_param = if is_pinocchio { + quote! { light_account_pinocchio::solana_pubkey::Pubkey } + } else { + quote! { solana_pubkey::Pubkey } + }; + match arg { syn::Expr::Reference(ref_expr) => { - let inner = map_call_arg(&ref_expr.expr, instruction_data, seen_params, parameters)?; + let inner = map_call_arg(&ref_expr.expr, instruction_data, seen_params, parameters, is_pinocchio)?; Ok(quote! { &#inner }) } syn::Expr::Field(field_expr) => { @@ -396,7 +404,7 @@ fn map_call_arg( // Check for ctx.accounts.field if FieldExtractor::is_ctx_accounts(&field_expr.base) { if seen_params.insert(field_name.to_string()) { - parameters.push(quote! { #field_name: &solana_pubkey::Pubkey }); + parameters.push(quote! { #field_name: &#pubkey_param }); } return Ok(quote! { #field_name }); } @@ -422,12 +430,12 @@ fn map_call_arg( // data.field not in instruction_data (e.g., from FunctionCall args) // Default to Pubkey parameter if seen_params.insert(field_name.to_string()) { - parameters.push(quote! { #field_name: &solana_pubkey::Pubkey }); + parameters.push(quote! { #field_name: &#pubkey_param }); } return Ok(quote! { #field_name }); } else if segment.ident == "ctx" { if seen_params.insert(field_name.to_string()) { - parameters.push(quote! { #field_name: &solana_pubkey::Pubkey }); + parameters.push(quote! { #field_name: &#pubkey_param }); } return Ok(quote! { #field_name }); } @@ -442,12 +450,13 @@ fn map_call_arg( instruction_data, seen_params, parameters, + is_pinocchio, )?; let method = &method_call.method; let args: Vec = method_call .args .iter() - .map(|a| map_call_arg(a, instruction_data, seen_params, parameters)) + .map(|a| map_call_arg(a, instruction_data, seen_params, parameters, is_pinocchio)) .collect::>()?; Ok(quote! { (#receiver).#method(#(#args),*) }) } @@ -456,7 +465,7 @@ fn map_call_arg( let args: Vec = nested_call .args .iter() - .map(|a| map_call_arg(a, instruction_data, seen_params, parameters)) + .map(|a| map_call_arg(a, instruction_data, seen_params, parameters, is_pinocchio)) .collect::>()?; Ok(quote! { (#func)(#(#args),*) }) } @@ -469,7 +478,7 @@ fn map_call_arg( && !is_constant_identifier(&name) && seen_params.insert(name) { - parameters.push(quote! { #ident: &solana_pubkey::Pubkey }); + parameters.push(quote! { #ident: &#pubkey_param }); } } Ok(quote! { #path_expr }) @@ -489,7 +498,15 @@ pub fn generate_client_seed_code( seen_params: &mut HashSet, parameters: &mut Vec, expressions: &mut Vec, + is_pinocchio: bool, ) -> syn::Result<()> { + // Choose the correct pubkey path based on framework + let pubkey_param = if is_pinocchio { + quote! { light_account_pinocchio::solana_pubkey::Pubkey } + } else { + quote! { solana_pubkey::Pubkey } + }; + match info { ClientSeedInfo::Literal(s) => { expressions.push(quote! { #s.as_bytes() }); @@ -513,7 +530,7 @@ pub fn generate_client_seed_code( ClientSeedInfo::CtxField { field, method } => { if seen_params.insert(field.to_string()) { - parameters.push(quote! { #field: &solana_pubkey::Pubkey }); + parameters.push(quote! { #field: &#pubkey_param }); } let expr = match method { Some(m) => quote! { #field.#m().as_ref() }, @@ -552,7 +569,7 @@ pub fn generate_client_seed_code( ClientSeedInfo::Identifier(ident) => { if seen_params.insert(ident.to_string()) { - parameters.push(quote! { #ident: &solana_pubkey::Pubkey }); + parameters.push(quote! { #ident: &#pubkey_param }); } expressions.push(quote! { #ident.as_ref() }); } @@ -560,7 +577,7 @@ pub fn generate_client_seed_code( ClientSeedInfo::FunctionCall(call_expr) => { let mut mapped_args: Vec = Vec::new(); for arg in &call_expr.args { - let mapped = map_call_arg(arg, instruction_data, seen_params, parameters)?; + let mapped = map_call_arg(arg, instruction_data, seen_params, parameters, is_pinocchio)?; mapped_args.push(mapped); } let func = &call_expr.func; diff --git a/sdk-tests/pinocchio-light-program-test/Cargo.toml b/sdk-tests/pinocchio-light-program-test/Cargo.toml index 5a77352b7e..912ce4b1a6 100644 --- a/sdk-tests/pinocchio-light-program-test/Cargo.toml +++ b/sdk-tests/pinocchio-light-program-test/Cargo.toml @@ -15,22 +15,12 @@ test-sbf = [] [dependencies] light-account-pinocchio = { workspace = true, features = ["token", "std"] } -light-macros = { workspace = true, features = ["solana"] } -light-sdk-types = { workspace = true, features = ["v2", "cpi-context"] } borsh = { workspace = true } bytemuck = { workspace = true, features = ["derive"] } -light-compressed-account = { workspace = true, features = ["solana"] } -light-compressible = { workspace = true, features = ["pinocchio"] } -light-hasher = { workspace = true, features = ["solana"] } -light-token-types = { workspace = true } -light-token-interface = { workspace = true } pinocchio = { workspace = true } pinocchio-pubkey = { workspace = true } pinocchio-system = { workspace = true } -solana-pubkey = { workspace = true } -solana-instruction = { workspace = true } -solana-msg = { workspace = true } -solana-program-error = { workspace = true } +light-hasher = { workspace = true } [dev-dependencies] light-program-test = { workspace = true, features = ["devenv"] } @@ -45,6 +35,14 @@ solana-sdk = { workspace = true } solana-account = { workspace = true } solana-keypair = { workspace = true } solana-signer = { workspace = true } +light-sdk-types = { workspace = true } +light-token-types = { workspace = true } +light-token-interface = { workspace = true } +solana-instruction = { workspace = true } +solana-pubkey = { workspace = true } +light-compressed-account = { workspace = true } +light-compressible = { workspace = true } + [lints.rust.unexpected_cfgs] level = "allow" diff --git a/sdk-tests/pinocchio-light-program-test/src/account_loader/processor.rs b/sdk-tests/pinocchio-light-program-test/src/account_loader/processor.rs index 9d5798d63a..39c606f669 100644 --- a/sdk-tests/pinocchio-light-program-test/src/account_loader/processor.rs +++ b/sdk-tests/pinocchio-light-program-test/src/account_loader/processor.rs @@ -1,9 +1,7 @@ use light_account_pinocchio::{ - prepare_compressed_account_on_init, CpiAccounts, CpiAccountsConfig, InvokeLightSystemProgram, - LightAccount, LightConfig, LightSdkTypesError, PackedAddressTreeInfoExt, -}; -use light_compressed_account::instruction_data::{ - cpi_context::CompressedCpiContext, with_account_info::InstructionDataInvokeCpiWithAccountInfo, + prepare_compressed_account_on_init, CompressedCpiContext, CpiAccounts, CpiAccountsConfig, + InstructionDataInvokeCpiWithAccountInfo, InvokeLightSystemProgram, LightAccount, LightConfig, + LightSdkTypesError, PackedAddressTreeInfoExt, }; use pinocchio::{ account_info::AccountInfo, diff --git a/sdk-tests/pinocchio-light-program-test/src/all/processor.rs b/sdk-tests/pinocchio-light-program-test/src/all/processor.rs index 2fb78fabc0..ed568b017e 100644 --- a/sdk-tests/pinocchio-light-program-test/src/all/processor.rs +++ b/sdk-tests/pinocchio-light-program-test/src/all/processor.rs @@ -1,11 +1,9 @@ use light_account_pinocchio::{ - derive_associated_token_account, prepare_compressed_account_on_init, CpiAccounts, - CpiAccountsConfig, CpiContextWriteAccounts, CreateMints, CreateMintsStaticAccounts, - CreateTokenAccountCpi, CreateTokenAtaCpi, InvokeLightSystemProgram, LightAccount, LightConfig, - LightSdkTypesError, PackedAddressTreeInfoExt, SingleMintParams, -}; -use light_compressed_account::instruction_data::{ - cpi_context::CompressedCpiContext, with_account_info::InstructionDataInvokeCpiWithAccountInfo, + derive_associated_token_account, prepare_compressed_account_on_init, CompressedCpiContext, + CpiAccounts, CpiAccountsConfig, CpiContextWriteAccounts, CreateMints, CreateMintsStaticAccounts, + CreateTokenAccountCpi, CreateTokenAtaCpi, InstructionDataInvokeCpiWithAccountInfo, + InvokeLightSystemProgram, LightAccount, LightConfig, LightSdkTypesError, + PackedAddressTreeInfoExt, SingleMintParams, }; use pinocchio::{ account_info::AccountInfo, diff --git a/sdk-tests/pinocchio-light-program-test/src/lib.rs b/sdk-tests/pinocchio-light-program-test/src/lib.rs index 898f8776b1..6a7ba2256c 100644 --- a/sdk-tests/pinocchio-light-program-test/src/lib.rs +++ b/sdk-tests/pinocchio-light-program-test/src/lib.rs @@ -6,9 +6,8 @@ #![allow(deprecated)] use light_account_pinocchio::{ - derive_light_cpi_signer, CpiSigner, LightAccount, LightProgramPinocchio, + derive_light_cpi_signer, pubkey_array, CpiSigner, LightAccount, LightProgramPinocchio, }; -use light_macros::pubkey_array; use pinocchio::{account_info::AccountInfo, program_error::ProgramError, pubkey::Pubkey}; pub mod account_loader; diff --git a/sdk-tests/pinocchio-light-program-test/src/pda/processor.rs b/sdk-tests/pinocchio-light-program-test/src/pda/processor.rs index 64746a953c..c902348148 100644 --- a/sdk-tests/pinocchio-light-program-test/src/pda/processor.rs +++ b/sdk-tests/pinocchio-light-program-test/src/pda/processor.rs @@ -1,9 +1,7 @@ use light_account_pinocchio::{ - prepare_compressed_account_on_init, CpiAccounts, CpiAccountsConfig, InvokeLightSystemProgram, - LightAccount, LightConfig, LightSdkTypesError, PackedAddressTreeInfoExt, -}; -use light_compressed_account::instruction_data::{ - cpi_context::CompressedCpiContext, with_account_info::InstructionDataInvokeCpiWithAccountInfo, + prepare_compressed_account_on_init, CompressedCpiContext, CpiAccounts, CpiAccountsConfig, + InstructionDataInvokeCpiWithAccountInfo, InvokeLightSystemProgram, LightAccount, LightConfig, + LightSdkTypesError, PackedAddressTreeInfoExt, }; use pinocchio::{ account_info::AccountInfo, From bfb35f8ecbd46993d15859061a2e291a34acb6de Mon Sep 17 00:00:00 2001 From: ananas Date: Wed, 4 Feb 2026 01:43:50 +0000 Subject: [PATCH 2/2] fix lint --- Cargo.lock | 3 --- sdk-libs/account-pinocchio/src/lib.rs | 12 ++++++++++-- .../macros/src/light_pdas/program/seed_codegen.rs | 7 +++++-- sdk-libs/macros/src/light_pdas/program/visitors.rs | 11 +++++++++-- .../src/all/processor.rs | 8 ++++---- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f8303eafb..d910a35934 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5182,7 +5182,6 @@ dependencies = [ "light-compressed-account", "light-compressible", "light-hasher", - "light-macros", "light-program-test", "light-sdk-types", "light-test-utils", @@ -5196,8 +5195,6 @@ dependencies = [ "solana-account", "solana-instruction", "solana-keypair", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", "solana-pubkey 2.4.0", "solana-sdk", "solana-signer", diff --git a/sdk-libs/account-pinocchio/src/lib.rs b/sdk-libs/account-pinocchio/src/lib.rs index 66cf735f04..fbc8893c74 100644 --- a/sdk-libs/account-pinocchio/src/lib.rs +++ b/sdk-libs/account-pinocchio/src/lib.rs @@ -258,8 +258,16 @@ pub use light_account_checks::{ account_info::pinocchio::OwnedAccountMeta, discriminator::Discriminator as LightDiscriminator, packed_accounts, AccountInfoTrait, AccountMetaTrait, }; -pub use light_compressed_account::instruction_data::compressed_proof::ValidityProof; -pub use light_macros::{derive_light_cpi_signer, derive_light_cpi_signer_pda}; +pub use light_compressed_account::instruction_data::{ + compressed_proof::ValidityProof, cpi_context::CompressedCpiContext, + with_account_info::InstructionDataInvokeCpiWithAccountInfo, +}; +pub use light_macros::{derive_light_cpi_signer, derive_light_cpi_signer_pda, pubkey_array}; +// Re-export for macro-generated client code (off-chain only) +#[cfg(feature = "std")] +pub extern crate solana_instruction; +#[cfg(feature = "std")] +pub extern crate solana_pubkey; pub use light_sdk_macros::{ AnchorDiscriminator as Discriminator, CompressAs, HasCompressionInfo, LightAccount, LightDiscriminator, LightHasher, LightHasherSha, LightPinocchioAccount, LightProgramPinocchio, diff --git a/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs b/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs index 0068f81b51..c3562cf43d 100644 --- a/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs +++ b/sdk-libs/macros/src/light_pdas/program/seed_codegen.rs @@ -106,8 +106,11 @@ pub fn generate_client_seed_functions( owner_seeds_spec.seeds.push(owner_seed.clone()); } - let (owner_parameters, owner_seed_expressions) = - analyze_seed_spec_for_client(&owner_seeds_spec, instruction_data, is_pinocchio)?; + let (owner_parameters, owner_seed_expressions) = analyze_seed_spec_for_client( + &owner_seeds_spec, + instruction_data, + is_pinocchio, + )?; let (fn_params, fn_body) = if owner_parameters.is_empty() { ( diff --git a/sdk-libs/macros/src/light_pdas/program/visitors.rs b/sdk-libs/macros/src/light_pdas/program/visitors.rs index 6cce9abdbc..1a3542a117 100644 --- a/sdk-libs/macros/src/light_pdas/program/visitors.rs +++ b/sdk-libs/macros/src/light_pdas/program/visitors.rs @@ -396,7 +396,13 @@ fn map_call_arg( match arg { syn::Expr::Reference(ref_expr) => { - let inner = map_call_arg(&ref_expr.expr, instruction_data, seen_params, parameters, is_pinocchio)?; + let inner = map_call_arg( + &ref_expr.expr, + instruction_data, + seen_params, + parameters, + is_pinocchio, + )?; Ok(quote! { &#inner }) } syn::Expr::Field(field_expr) => { @@ -577,7 +583,8 @@ pub fn generate_client_seed_code( ClientSeedInfo::FunctionCall(call_expr) => { let mut mapped_args: Vec = Vec::new(); for arg in &call_expr.args { - let mapped = map_call_arg(arg, instruction_data, seen_params, parameters, is_pinocchio)?; + let mapped = + map_call_arg(arg, instruction_data, seen_params, parameters, is_pinocchio)?; mapped_args.push(mapped); } let func = &call_expr.func; diff --git a/sdk-tests/pinocchio-light-program-test/src/all/processor.rs b/sdk-tests/pinocchio-light-program-test/src/all/processor.rs index ed568b017e..3412d5bc1c 100644 --- a/sdk-tests/pinocchio-light-program-test/src/all/processor.rs +++ b/sdk-tests/pinocchio-light-program-test/src/all/processor.rs @@ -1,9 +1,9 @@ use light_account_pinocchio::{ derive_associated_token_account, prepare_compressed_account_on_init, CompressedCpiContext, - CpiAccounts, CpiAccountsConfig, CpiContextWriteAccounts, CreateMints, CreateMintsStaticAccounts, - CreateTokenAccountCpi, CreateTokenAtaCpi, InstructionDataInvokeCpiWithAccountInfo, - InvokeLightSystemProgram, LightAccount, LightConfig, LightSdkTypesError, - PackedAddressTreeInfoExt, SingleMintParams, + CpiAccounts, CpiAccountsConfig, CpiContextWriteAccounts, CreateMints, + CreateMintsStaticAccounts, CreateTokenAccountCpi, CreateTokenAtaCpi, + InstructionDataInvokeCpiWithAccountInfo, InvokeLightSystemProgram, LightAccount, LightConfig, + LightSdkTypesError, PackedAddressTreeInfoExt, SingleMintParams, }; use pinocchio::{ account_info::AccountInfo,