Change artifact panics to runtime errors (#7177)

* Change artifact panics to runtime errors

* Condense format!()

* Remove unwrap
This commit is contained in:
Jonathan Tran
2025-05-22 17:48:19 -04:00
committed by GitHub
parent 8972f8f109
commit fa4b3cfd1b

View File

@ -20,6 +20,14 @@ use crate::{
#[cfg(test)]
mod mermaid_tests;
macro_rules! internal_error {
($range:expr, $($rest:tt)*) => {{
let message = format!($($rest)*);
debug_assert!(false, "{}", &message);
return Err(KclError::Internal(KclErrorDetails::new(message, vec![$range])));
}};
}
/// A command that may create or update artifacts on the TS side. Because
/// engine commands are batched, we don't have the response yet when these are
/// created.
@ -992,7 +1000,10 @@ fn artifacts_to_update(
let path_id = ArtifactId::new(match cmd {
ModelingCmd::ClosePath(c) => c.path_id,
ModelingCmd::ExtendPath(e) => e.path.into(),
_ => unreachable!(),
_ => internal_error!(
range,
"Close or extend path command variant not handled: id={id:?}, cmd={cmd:?}"
),
});
let mut return_arr = Vec::new();
return_arr.push(Artifact::Segment(Segment {
@ -1032,7 +1043,7 @@ fn artifacts_to_update(
ModelingCmd::Revolve(_) => SweepSubType::Revolve,
ModelingCmd::RevolveAboutEdge(_) => SweepSubType::RevolveAboutEdge,
ModelingCmd::Sweep(_) => SweepSubType::Sweep,
_ => unreachable!(),
_ => internal_error!(range, "Sweep-like command variant not handled: id={id:?}, cmd={cmd:?}",),
};
let mut return_arr = Vec::new();
let target = ArtifactId::from(target);
@ -1297,7 +1308,13 @@ fn artifacts_to_update(
let edge_id = if let Some(edge_id) = cmd.edge_id {
ArtifactId::new(edge_id)
} else {
cmd.edge_ids.first().unwrap().into()
let Some(edge_id) = cmd.edge_ids.first() else {
internal_error!(
range,
"Solid3dFilletEdge command has no edge ID: id={id:?}, cmd={cmd:?}"
);
};
edge_id.into()
};
return_arr.push(Artifact::EdgeCut(EdgeCut {
id,
@ -1366,7 +1383,10 @@ fn artifacts_to_update(
let solid_ids = union.solid_ids.iter().copied().map(ArtifactId::new).collect::<Vec<_>>();
(CompositeSolidSubType::Union, solid_ids, Vec::new())
}
_ => unreachable!(),
_ => internal_error!(
range,
"Boolean or composite command variant not handled: id={id:?}, cmd={cmd:?}"
),
};
let mut new_solid_ids = vec![id];