From d5b0f6a487f628a9e351c2e56d56b3817e781327 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Thu, 12 Mar 2026 03:09:26 +0000 Subject: [PATCH] refactor: nix-eval macro-support --- --- a/cmds/repl-plugin-unstable/src/lib.rs +++ b/cmds/repl-plugin-unstable/src/lib.rs @@ -1,5 +1,6 @@ use fleet_base::primops::init_primops; +/// SAFETY: expected plugin dynamic library entry point #[unsafe(no_mangle)] fn nix_plugin_entry() { init_primops(); --- a/crates/nix-eval/src/lib.rs +++ b/crates/nix-eval/src/lib.rs @@ -46,6 +46,14 @@ pub mod logging; #[doc(hidden)] pub mod macros; + +#[doc(hidden)] +pub mod __macro_support { + pub use std::collections::hash_map::HashMap; + + pub use anyhow::Context; + pub use tokio::task::block_in_place; +} pub mod util; #[allow( --- a/crates/nix-eval/src/macros.rs +++ b/crates/nix-eval/src/macros.rs @@ -18,12 +18,12 @@ (@obj($o:ident)) => {{}}; (Obj { }) => {{ use $crate::{nix_expr_inner}; - let out = std::collections::hash_map::HashMap::new(); + let out = $crate::__macro_support::HashMap::new(); Value::new_attrs(out) }}; (Obj { $($tt:tt)+ }) => {{ use $crate::{nix_expr_inner}; - let mut out = std::collections::hash_map::HashMap::new(); + let mut out = $crate::__macro_support::HashMap::new(); nix_expr_inner!(@obj(out) $($tt)*); Value::new_attrs(out) }}; @@ -68,25 +68,25 @@ #[macro_export] macro_rules! nix_go { (@o($o:expr, $path:expr) . $var:ident $($tt:tt)*) => {{ - nix_go!(@o(tokio::task::block_in_place(|| $o.get_field(stringify!($var))).context(concat!("getting nested ", $path))?, $path) $($tt)*) + nix_go!(@o($crate::__macro_support::block_in_place(|| $o.get_field(stringify!($var))).context(concat!("getting nested ", $path))?, $path) $($tt)*) }}; (@o($o:expr, $path:expr) [ $v:expr ] $($tt:tt)*) => {{ - nix_go!(@o(tokio::task::block_in_place(|| $o.get_field($v)).context(concat!("getting nested ", $path))?, $path) $($tt)*) + nix_go!(@o($crate::__macro_support::block_in_place(|| $o.get_field($v)).context(concat!("getting nested ", $path))?, $path) $($tt)*) }}; (@o($o:expr, $path:expr) ($($var:tt)*) $($tt:tt)*) => { - nix_go!(@o(tokio::task::block_in_place(|| $o.call($crate::nix_expr_inner!($($var)+))).context(concat!("getting nested ", $path))?, $path) $($tt)*) + nix_go!(@o($crate::__macro_support::block_in_place(|| $o.call($crate::nix_expr_inner!($($var)+))).context(concat!("getting nested ", $path))?, $path) $($tt)*) }; (@o($o:expr, $path:expr)) => {$o}; ($field:ident $($tt:tt)+) => {{ use $crate::nix_go; - use ::anyhow::Context; + use $crate::__macro_support::Context; let out = $field.clone(); - nix_go!(@o(out, ::std::stringify!($($tt)*)) $($tt)*) + nix_go!(@o(out, stringify!($($tt)*)) $($tt)*) }} } #[macro_export] macro_rules! nix_go_json { ($($tt:tt)*) => {{ - tokio::task::block_in_place(|| $crate::nix_go!($($tt)*).as_json())? + $crate::__macro_support::block_in_place(|| $crate::nix_go!($($tt)*).as_json())? }}; } -- gitstuff