From 96b8af0454ddbe82db4bf9afccd496528b1b316a Mon Sep 17 00:00:00 2001 From: Adam Knapp Date: Thu, 7 Apr 2022 16:58:47 +0200 Subject: [PATCH 1/2] Added some missing 'case' branches related to advanced matching Signed-off-by: Adam Knapp --- compiler2/Value.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler2/Value.cc b/compiler2/Value.cc index f0a72191f..f9c045252 100644 --- a/compiler2/Value.cc +++ b/compiler2/Value.cc @@ -12071,6 +12071,7 @@ void Value::chk_expr_operand_execute_refd(Value *v1, ->chk_this_value(v, lhs, Type::EXPECTED_DYNAMIC_VALUE, INCOMPLETE_NOT_ALLOWED, OMIT_ALLOWED, NO_SUB_CHK, NOT_IMPLICIT_OMIT, NOT_STR_ELEM, class_member_init); break; } + case Ttcn::Template::DYNAMIC_MATCH: case Ttcn::Template::TEMPLATE_REFD: { if (lhs != NULL) { Ttcn::Reference *refb = t->get_reference(); @@ -12086,7 +12087,8 @@ void Value::chk_expr_operand_execute_refd(Value *v1, case Ttcn::Template::SUBSET_MATCH: case Ttcn::Template::PERMUTATION_MATCH: case Ttcn::Template::COMPLEMENTED_LIST: - case Ttcn::Template::VALUE_LIST: { + case Ttcn::Template::VALUE_LIST: + case Ttcn::Template::CONJUNCTION_MATCH: { size_t num = t->get_nof_comps(); for (size_t i = 0; i < num; ++i) { self_ref |= chk_expr_self_ref_templ(t->get_temp_byIndex(i), lhs, class_member_init); @@ -12147,6 +12149,10 @@ void Value::chk_expr_operand_execute_refd(Value *v1, self_ref |= chk_expr_self_ref_templ(t->get_concat_operand(true), lhs, class_member_init); self_ref |= chk_expr_self_ref_templ(t->get_concat_operand(false), lhs, class_member_init); break; + case Ttcn::Template::IMPLICATION_MATCH: + self_ref |= chk_expr_self_ref_templ(t->get_precondition()->get_Template(), lhs, class_member_init); + self_ref |= chk_expr_self_ref_templ(t->get_implied_template()->get_Template(), lhs, class_member_init); + break; // default: // FATAL_ERROR("todo ttype %d", t->get_templatetype()); // break; // and hope for the best -- GitLab From 78e72484d968d25c74ba21702f425368945173b3 Mon Sep 17 00:00:00 2001 From: Adam Knapp Date: Thu, 7 Apr 2022 17:59:11 +0200 Subject: [PATCH 2/2] Fixing the dynamic template case Signed-off-by: Adam Knapp --- compiler2/Value.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler2/Value.cc b/compiler2/Value.cc index f9c045252..7a813b8a0 100644 --- a/compiler2/Value.cc +++ b/compiler2/Value.cc @@ -12071,7 +12071,6 @@ void Value::chk_expr_operand_execute_refd(Value *v1, ->chk_this_value(v, lhs, Type::EXPECTED_DYNAMIC_VALUE, INCOMPLETE_NOT_ALLOWED, OMIT_ALLOWED, NO_SUB_CHK, NOT_IMPLICIT_OMIT, NOT_STR_ELEM, class_member_init); break; } - case Ttcn::Template::DYNAMIC_MATCH: case Ttcn::Template::TEMPLATE_REFD: { if (lhs != NULL) { Ttcn::Reference *refb = t->get_reference(); @@ -12153,6 +12152,9 @@ void Value::chk_expr_operand_execute_refd(Value *v1, self_ref |= chk_expr_self_ref_templ(t->get_precondition()->get_Template(), lhs, class_member_init); self_ref |= chk_expr_self_ref_templ(t->get_implied_template()->get_Template(), lhs, class_member_init); break; + case Ttcn::Template::DYNAMIC_MATCH: + // TODO: check the statement block + break; // default: // FATAL_ERROR("todo ttype %d", t->get_templatetype()); // break; // and hope for the best -- GitLab