#[expect(
clippy::exhaustive_enums,
reason = "IR types are matched exhaustively by code generators"
)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
pub enum ImportedKind {
Struct,
Trait,
Enum,
Function,
ModuleLet,
}
#[expect(
clippy::exhaustive_structs,
reason = "IR types are constructed directly by consumer code"
)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct IrImport {
pub module_path: Vec<String>,
pub items: Vec<IrImportItem>,
pub source_file: std::path::PathBuf,
}
#[expect(
clippy::exhaustive_structs,
reason = "IR types are constructed directly by consumer code"
)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct IrImportItem {
pub name: String,
pub kind: ImportedKind,
}