use thiserror::Error;
use vyre_foundation::operation::{OperationRegistry, OperationTier, SemanticOperation};
#[derive(Debug, Clone, Eq, PartialEq, Error)]
pub enum IntrinsicRegistrationError {
#[error("unknown intrinsic id `{id}` in target facet; register the semantic intrinsic first")]
UnknownId {
id: &'static str,
},
}
pub fn validate_intrinsic_lowering(
operation_id: &'static str,
) -> Result<SemanticOperation, IntrinsicRegistrationError> {
OperationRegistry::global()
.get(operation_id)
.filter(|operation| operation.tier == OperationTier::Intrinsic)
.ok_or(IntrinsicRegistrationError::UnknownId { id: operation_id })
}