diff --git a/hydroflow_lang/src/diagnostic.rs b/hydroflow_lang/src/diagnostic.rs index 11635016fb9..ef41c90e5d0 100644 --- a/hydroflow_lang/src/diagnostic.rs +++ b/hydroflow_lang/src/diagnostic.rs @@ -193,13 +193,10 @@ pub struct SerdeSpan { } impl From for SerdeSpan { fn from(span: Span) -> Self { - #[cfg(all(nightly, panic = "unwind"))] - let path = std::panic::catch_unwind(|| span.unwrap()) - .map(|span| span.source_file().path().display().to_string()) - .ok(); - - #[cfg(not(nightly))] - let path = None::; + let path = cfg!(all(nightly, panic = "unwind")) + .then_some(()) + .and_then(|()| std::panic::catch_unwind(|| span.unwrap()).ok()) + .map(|span| span.source_file().path().display().to_string()); Self { path: path.map_or(Cow::Borrowed("unknown"), Cow::Owned), diff --git a/hydroflow_lang/src/graph/hydroflow_graph.rs b/hydroflow_lang/src/graph/hydroflow_graph.rs index 4faf5e7e07b..5720c63e0d9 100644 --- a/hydroflow_lang/src/graph/hydroflow_graph.rs +++ b/hydroflow_lang/src/graph/hydroflow_graph.rs @@ -1006,11 +1006,11 @@ impl HydroflowGraph { subgraph_op_iter_code.push(write_iterator); if include_type_guards { - #[cfg(not(nightly))] - let source_info = Option::::None; - - #[cfg(all(nightly, panic = "unwind"))] - let source_info = std::panic::catch_unwind(|| op_span.unwrap()) + let source_info = cfg!(all(nightly, panic = "unwind")) + .then_some(()) + .and_then(|()| { + std::panic::catch_unwind(|| op_span.unwrap()).ok() + }) .map(|op_span| { format!( "loc_{}_{}_{}_{}_{}", @@ -1025,8 +1025,7 @@ impl HydroflowGraph { op_span.end().line(), op_span.end().column(), ) - }) - .ok(); + }); #[cfg_attr( not(nightly),