From 19cda2cc20322424e57933b731ac6be3e5e42b1b Mon Sep 17 00:00:00 2001 From: Ivan Frolov Date: Mon, 30 Mar 2026 17:14:07 -0400 Subject: [PATCH] fix: issues 4 and 6 --- omni-utils-derive/src/trusted_relayer.rs | 38 ++++++------------------ omni-utils/src/near_expect.rs | 4 +-- 2 files changed, 11 insertions(+), 31 deletions(-) diff --git a/omni-utils-derive/src/trusted_relayer.rs b/omni-utils-derive/src/trusted_relayer.rs index b1dcd3d..4ef354b 100644 --- a/omni-utils-derive/src/trusted_relayer.rs +++ b/omni-utils-derive/src/trusted_relayer.rs @@ -3,7 +3,7 @@ use proc_macro2::TokenStream as TokenStream2; use quote::quote; use syn::parse::{Parse, ParseStream}; use syn::punctuated::Punctuated; -use syn::{Expr, ImplItem, ItemFn, ItemImpl, Token, parenthesized, parse_macro_input}; +use syn::{Expr, ImplItem, ItemImpl, Token, parenthesized, parse_macro_input}; struct RoleExpr { expr: Expr, @@ -433,25 +433,6 @@ fn process_impl_block(args: TokenStream, input: TokenStream) -> TokenStream { output.into() } -fn process_fn(input: TokenStream) -> TokenStream { - let mut item_fn = parse_macro_input!(input as ItemFn); - - let guard = syn::parse2::(quote! { - ::near_sdk::require!( - ::is_trusted_relayer( - self, - &::near_sdk::env::predecessor_account_id(), - ), - "Relayer is not active" - ); - }) - .expect("failed to parse trusted_relayer guard statement"); - - item_fn.block.stmts.insert(0, guard); - - quote! { #item_fn }.into() -} - pub fn trusted_relayer(args: TokenStream, input: TokenStream) -> TokenStream { let input_clone: proc_macro2::TokenStream = input.clone().into(); @@ -465,15 +446,14 @@ pub fn trusted_relayer(args: TokenStream, input: TokenStream) -> TokenStream { process_impl_block(args, input) } } else { - if !args.is_empty() { - return syn::Error::new( - proc_macro2::Span::call_site(), - "`#[trusted_relayer]` on methods does not accept arguments", - ) - .to_compile_error() - .into(); - } - process_fn(input) + syn::Error::new( + proc_macro2::Span::call_site(), + "`#[trusted_relayer]` can only be applied to impl blocks, \ + not standalone functions. Use it on methods inside an impl block \ + annotated with `#[trusted_relayer]`.", + ) + .to_compile_error() + .into() } } diff --git a/omni-utils/src/near_expect.rs b/omni-utils/src/near_expect.rs index 1324512..f8fe563 100644 --- a/omni-utils/src/near_expect.rs +++ b/omni-utils/src/near_expect.rs @@ -8,8 +8,8 @@ impl NearExpect for Option { } } -impl NearExpect for Result { +impl NearExpect for Result { fn near_expect(self, msg: impl AsRef) -> T { - self.unwrap_or_else(|_| near_sdk::env::panic_str(msg.as_ref())) + self.unwrap_or_else(|err| near_sdk::env::panic_str(&format!("{}: {:?}", msg.as_ref(), err))) } }