Skip to main content

nxpu_ir/
error.rs

1//! Error types for the NxPU IR.
2
3/// Errors that can occur when constructing or validating IR.
4#[derive(Debug, thiserror::Error)]
5pub enum IrError {
6    /// An edge referenced by a graph node was not registered.
7    #[error("unknown edge {edge_id} referenced by node {node_name:?}")]
8    UnknownEdge { edge_id: u32, node_name: String },
9
10    /// An output edge already has a producer node.
11    #[error(
12        "edge {edge_id} already produced by {existing_producer:?}, cannot add producer {new_producer:?}"
13    )]
14    DuplicateEdgeProducer {
15        edge_id: u32,
16        existing_producer: String,
17        new_producer: String,
18    },
19
20    /// A cycle was detected in the computation graph.
21    #[error("graph contains a cycle ({visited} of {total} nodes visited)")]
22    CycleDetected { visited: usize, total: usize },
23}