Skip to main content

openapi_nexus/ir/lower/
error.rs

1//! Lowering errors.
2
3use std::fmt;
4
5#[derive(Debug)]
6pub enum LowerError {
7    /// A `$ref` could not be resolved.
8    UnresolvedReference { reference: String },
9    /// An external reference was encountered (not supported).
10    ExternalReference { reference: String },
11    /// An unsupported OpenAPI version was encountered.
12    UnsupportedVersion { version: String },
13    /// A generic lowering error.
14    Other { message: String },
15}
16
17impl fmt::Display for LowerError {
18    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19        match self {
20            LowerError::UnresolvedReference { reference } => {
21                write!(f, "unresolved reference: {reference}")
22            }
23            LowerError::ExternalReference { reference } => {
24                write!(f, "external references not supported: {reference}")
25            }
26            LowerError::UnsupportedVersion { version } => {
27                write!(f, "OpenAPI version {version} lowering not yet implemented")
28            }
29            LowerError::Other { message } => write!(f, "{message}"),
30        }
31    }
32}
33
34impl std::error::Error for LowerError {}