From 32b3998094a1242853f2aedc5441b295e30c0883 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 1 Aug 2024 10:04:10 +1000 Subject: [PATCH] xo-parser: use ConvertExpr for 'def foo : sometype...' --- src/parser/parser.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index 9bd6b8f6..9851a987 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -6,12 +6,14 @@ #include "parser.hpp" #include "xo/expression/DefineExpr.hpp" #include "xo/expression/Constant.hpp" +#include "xo/expression/ConvertExpr.hpp" //#include #include namespace xo { using xo::ast::Expression; using xo::ast::DefineExpr; + using xo::ast::ConvertExpr; using xo::ast::Constant; using xo::reflect::Reflect; using xo::reflect::TypeDescr; @@ -582,12 +584,15 @@ namespace xo { * 2. if ir_type is an expression, adopt as rhs */ if (ir.xir_type() == exprirtype::expression) { - /* TODO: do something with def_lhs_type */ + /* TODO: do something with def_lhs_td */ rp rhs_value = ir.expr(); - rp def - = DefineExpr::make(this->def_lhs_symbol_, - rhs_value); + + if (def_lhs_td_) + rhs_value = ConvertExpr::make(def_lhs_td_, rhs_value); + + rp def = DefineExpr::make(this->def_lhs_symbol_, + rhs_value); return expraction(expractiontype::pop, exprir(exprirtype::expression, def),