diff --git a/xo-expression2/src/expression2/DDefineExpr.cpp b/xo-expression2/src/expression2/DDefineExpr.cpp index 14d1c52e..ada633f6 100644 --- a/xo-expression2/src/expression2/DDefineExpr.cpp +++ b/xo-expression2/src/expression2/DDefineExpr.cpp @@ -24,9 +24,13 @@ namespace xo { void * mem = mm.alloc(typeseq::id(), sizeof(DDefineExpr)); + TypeRef rhs_tref; + if (rhs_expr) + rhs_tref = rhs_expr.typeref(); + auto lhs_var = DVariable::make(mm, lhs_name, - rhs_expr.typeref()); + rhs_tref); return new (mem) DDefineExpr(lhs_var, rhs_expr); } diff --git a/xo-reader2/utest/SchematikaParser.test.cpp b/xo-reader2/utest/SchematikaParser.test.cpp index 6100392a..194a6d13 100644 --- a/xo-reader2/utest/SchematikaParser.test.cpp +++ b/xo-reader2/utest/SchematikaParser.test.cpp @@ -95,7 +95,7 @@ namespace xo { auto & result = parser.on_token(Token::symbol_token("foo")); REQUIRE(parser.has_incomplete_expr() == true); - REQUIRE(result.is_error()); + REQUIRE(result.is_incomplete()); } // define-expressions not properly implemented