diff --git a/reid/src/codegen.rs b/reid/src/codegen.rs index 5115cbb..abd599e 100644 --- a/reid/src/codegen.rs +++ b/reid/src/codegen.rs @@ -334,6 +334,7 @@ impl mir::Expression { } } mir::ExprKind::Index(expression, _) => todo!("codegen for index expression"), + mir::ExprKind::Array(expressions) => todo!("codegen for array expression"), } } } diff --git a/reid/src/mir/display.rs b/reid/src/mir/display.rs index 78f0c07..8b503a6 100644 --- a/reid/src/mir/display.rs +++ b/reid/src/mir/display.rs @@ -132,6 +132,18 @@ impl Display for ExprKind { Display::fmt(&expression, f)?; write_index(f, *idx) } + ExprKind::Array(expressions) => { + f.write_char('[')?; + let mut iter = expressions.iter(); + if let Some(item) = iter.next() { + Display::fmt(item, f); + while let Some(item) = iter.next() { + f.write_str(", ")?; + Display::fmt(item, f)?; + } + } + f.write_char(']') + } } } } diff --git a/reid/src/mir/mod.rs b/reid/src/mir/mod.rs index fb9f3c4..5fd4aa4 100644 --- a/reid/src/mir/mod.rs +++ b/reid/src/mir/mod.rs @@ -209,6 +209,7 @@ pub struct Import(pub String, pub Metadata); pub enum ExprKind { Variable(NamedVariableRef), Index(Box, u64), + Array(Vec), Literal(Literal), BinOp(BinaryOperator, Box, Box), FunctionCall(FunctionCall), diff --git a/reid/src/mir/typecheck.rs b/reid/src/mir/typecheck.rs index 004ba5d..72e4e99 100644 --- a/reid/src/mir/typecheck.rs +++ b/reid/src/mir/typecheck.rs @@ -374,6 +374,7 @@ impl Expression { } ExprKind::Block(block) => block.typecheck(state, &hints, hint_t), ExprKind::Index(expression, _) => todo!("typechecking for index expression"), + ExprKind::Array(expressions) => todo!("typechecking for array expression"), } } } diff --git a/reid/src/mir/typeinference.rs b/reid/src/mir/typeinference.rs index cee6bfa..4b5c8e3 100644 --- a/reid/src/mir/typeinference.rs +++ b/reid/src/mir/typeinference.rs @@ -261,6 +261,7 @@ impl Expression { } } ExprKind::Index(expression, _) => todo!("type inference for index expression"), + ExprKind::Array(expressions) => todo!("type inference for array expression"), } } } diff --git a/reid/src/mir/types.rs b/reid/src/mir/types.rs index b01082f..74766c8 100644 --- a/reid/src/mir/types.rs +++ b/reid/src/mir/types.rs @@ -87,6 +87,7 @@ impl ReturnType for Expression { FunctionCall(fcall) => fcall.return_type(), If(expr) => expr.return_type(), Index(expression, _) => todo!("return type for index"), + Array(expressions) => todo!("return type for array expression"), } } }