use crate::ir::{BindingId, EnumId, FunctionId, ImplId, ImportedKind, LetId, StructId, TraitId};
#[expect(
clippy::exhaustive_enums,
reason = "IR types are matched exhaustively by code generators"
)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum ReferenceTarget {
Function(FunctionId),
Struct(StructId),
Enum(EnumId),
Trait(TraitId),
ModuleLet(LetId),
Local(BindingId),
Param(BindingId),
External {
module_path: Vec<String>,
name: String,
kind: ImportedKind,
},
Unresolved,
}
#[expect(
clippy::exhaustive_enums,
reason = "IR types are matched exhaustively by code generators"
)]
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
pub enum DispatchKind {
Static {
impl_id: ImplId,
},
Virtual {
trait_id: TraitId,
method_name: String,
},
}