From ab83542a3dc75eaecc9e9a28ad7bcccf2e6d7d88 Mon Sep 17 00:00:00 2001 From: Botond Baranyi <botond.baranyi@ericsson.com> Date: Tue, 29 Oct 2019 17:19:32 +0100 Subject: [PATCH] Fixed usage of optional field in value redirect (bug 552529) Change-Id: I7f8b9c347811cb00fb6cd04f1514ac750dcba719 Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com> --- compiler2/ttcn3/Statement.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler2/ttcn3/Statement.cc b/compiler2/ttcn3/Statement.cc index 1bb7f0d6d..0363c48f0 100644 --- a/compiler2/ttcn3/Statement.cc +++ b/compiler2/ttcn3/Statement.cc @@ -10707,8 +10707,14 @@ error: expression_struct var_ref_expr; Code::init_expr(&var_ref_expr); inst_params_str = mputstr(inst_params_str, "&("); - v[i]->get_var_ref()->generate_code(&var_ref_expr); + Reference* ref = v[i]->get_var_ref(); + ref->generate_code(&var_ref_expr); inst_params_str = mputstr(inst_params_str, var_ref_expr.expr); + if (ref->get_refd_assignment()->get_Type()->get_type_refd_last()-> + get_field_type(ref->get_subrefs(), + Common::Type::EXPECTED_DYNAMIC_VALUE)->is_optional_field()) { + inst_params_str = mputstr(inst_params_str, "()"); + } inst_params_str = mputc(inst_params_str, ')'); if (var_ref_expr.preamble != NULL) { expr->preamble = mputstr(expr->preamble, var_ref_expr.preamble); -- GitLab