1use gitql_ast::types::array::ArrayType;
2use gitql_ast::types::DataType;
3
4#[inline(always)]
7pub fn first_element_type(elements: &[Box<dyn DataType>]) -> Box<dyn DataType> {
8 elements[0].clone()
9}
10
11#[inline(always)]
14pub fn second_element_type(elements: &[Box<dyn DataType>]) -> Box<dyn DataType> {
15 elements[0].clone()
16}
17
18#[inline(always)]
21pub fn array_of_type(element_type: Box<dyn DataType>) -> Box<dyn DataType> {
22 Box::new(ArrayType {
23 base: element_type.clone(),
24 })
25}
26
27#[inline(always)]
30pub fn array_element_type(array: Box<dyn DataType>) -> Box<dyn DataType> {
31 if let Some(other_array) = array.as_any().downcast_ref::<ArrayType>() {
32 return other_array.base.clone();
33 }
34 panic!("Expect Array type")
35}