diff --git a/src/protocol/ast.rs b/src/protocol/ast.rs index c73bcdf4b710390a3a21bc6c0202cf5dd089137f..829ec525d7d64a682ab17ae0f0ee5cafbbc07d14 100644 --- a/src/protocol/ast.rs +++ b/src/protocol/ast.rs @@ -2144,6 +2144,22 @@ impl Expression { Expression::Variable(expr) => expr.parent = parent, } } + pub fn get_type(&self) -> &ConcreteType { + match self { + Expression::Assignment(expr) => &expr.concrete_type, + Expression::Conditional(expr) => &expr.concrete_type, + Expression::Binary(expr) => &expr.concrete_type, + Expression::Unary(expr) => &expr.concrete_type, + Expression::Indexing(expr) => &expr.concrete_type, + Expression::Slicing(expr) => &expr.concrete_type, + Expression::Select(expr) => &expr.concrete_type, + Expression::Array(expr) => &expr.concrete_type, + Expression::Literal(expr) => &expr.concrete_type, + Expression::Call(expr) => &expr.concrete_type, + Expression::Variable(expr) => &expr.concrete_type, + } + } + // TODO: @cleanup pub fn get_type_mut(&mut self) -> &mut ConcreteType { match self {