diff --git a/rust/nix-expr/src/eval_state.rs b/rust/nix-expr/src/eval_state.rs index d99f50d..7ba139a 100644 --- a/rust/nix-expr/src/eval_state.rs +++ b/rust/nix-expr/src/eval_state.rs @@ -225,12 +225,12 @@ impl EvalState { let attr_name = CString::new(attr_name) .with_context(|| "require_attrs_select_opt: attrName contains null byte")?; let v2 = unsafe { - check_call_opt_key!(raw::get_attr_byname[ + check_call_opt_key!(raw::get_attr_byname( &mut self.context, v.raw_ptr(), self.eval_state.as_ptr(), attr_name.as_ptr() - ]) + )) }?; Ok(v2.map(Value::new)) } diff --git a/rust/nix-util/src/context.rs b/rust/nix-util/src/context.rs index 1314360..f5db84d 100644 --- a/rust/nix-util/src/context.rs +++ b/rust/nix-util/src/context.rs @@ -105,10 +105,10 @@ pub use check_call; // TODO: Generalize this macro to work with any error code or any error handling logic #[macro_export] macro_rules! check_call_opt_key { - ($f:path[$ctx:expr, $($arg:expr),*]) => { + ($($f:ident)::+($ctx:expr, $($arg:expr),*)) => { { let ctx : &mut $crate::context::Context = $ctx; - let ret = $f(ctx.ptr(), $($arg,)*); + let ret = $($f)::*(ctx.ptr(), $($arg,)*); if unsafe { raw::err_code(ctx.ptr()) == raw::NIX_ERR_KEY } { ctx.clear(); return Ok(None);