use crate::ast::{Literal, PrimitiveType};
use crate::ir::lower::IrLowerer;
use crate::ir::ResolvedType;
impl IrLowerer<'_> {
pub(in crate::ir::lower::expr) fn literal_type(&self, lit: &Literal) -> ResolvedType {
match lit {
Literal::String(_) => ResolvedType::Primitive(PrimitiveType::String),
Literal::Number(n) => ResolvedType::Primitive(n.primitive_type()),
Literal::Boolean(_) => ResolvedType::Primitive(PrimitiveType::Boolean),
Literal::Path(_) => ResolvedType::Primitive(PrimitiveType::Path),
Literal::Regex { .. } => ResolvedType::Primitive(PrimitiveType::Regex),
Literal::Nil => self
.optional_of(ResolvedType::Primitive(PrimitiveType::Never))
.unwrap_or(ResolvedType::Error),
}
}
}