use gitql_ast::types::array::ArrayType;
use gitql_ast::types::base::DataType;
#[inline(always)]
pub fn first_element_type(elements: &[Box<dyn DataType>]) -> Box<dyn DataType> {
elements[0].clone()
}
#[inline(always)]
pub fn second_element_type(elements: &[Box<dyn DataType>]) -> Box<dyn DataType> {
elements[0].clone()
}
#[inline(always)]
pub fn array_of_type(element_type: Box<dyn DataType>) -> Box<dyn DataType> {
Box::new(ArrayType {
base: element_type.clone(),
})
}
#[inline(always)]
pub fn array_element_type(array: Box<dyn DataType>) -> Box<dyn DataType> {
if let Some(other_array) = array.as_any().downcast_ref::<ArrayType>() {
return other_array.base.clone();
}
panic!("Expect Array type")
}