From 0a603b985b5105db9f1e4b284dddd1ea4284964f Mon Sep 17 00:00:00 2001 From: BenceJanosSzabo <bence.janos.szabo@ericsson.com> Date: Thu, 9 Feb 2017 15:47:25 +0100 Subject: [PATCH] Fixed modulepar with refers produces fatal error (Bug 511976) Change-Id: I0a81fabc3a8bb92e89126e2d5511f29bef146865 Signed-off-by: BenceJanosSzabo <bence.janos.szabo@ericsson.com> --- compiler2/ttcn3/AST_ttcn3.cc | 2 +- .../functionReference/FuncRef.ttcn | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/compiler2/ttcn3/AST_ttcn3.cc b/compiler2/ttcn3/AST_ttcn3.cc index 2bc045e2b..30393a8fd 100644 --- a/compiler2/ttcn3/AST_ttcn3.cc +++ b/compiler2/ttcn3/AST_ttcn3.cc @@ -3847,8 +3847,8 @@ namespace Ttcn { if (t->get_fat_runs_on_self()) { error("Type of module parameter cannot be of function reference type" " `%s' which has runs on self clause", t->get_fullname().c_str()); + break; } - break; default: #if defined(MINGW) checked = true; diff --git a/regression_test/functionReference/FuncRef.ttcn b/regression_test/functionReference/FuncRef.ttcn index 99c7b0635..ff99e5831 100644 --- a/regression_test/functionReference/FuncRef.ttcn +++ b/regression_test/functionReference/FuncRef.ttcn @@ -29,6 +29,16 @@ function add(in integer a, in integer b) return integer { return a+b; } function sub(in integer a, in integer b) return integer { return a-b; } function mul(in integer a, in integer b) return integer { return a*b; } +public function my_int2str(in integer a) return charstring { + var charstring f := int2str(a); + return f; +} + +type function my_int2str_type(in integer a) return charstring; + +modulepar my_int2str_type modulepar_my_intstr := refers(my_int2str); + + type union operator_type { un_oper unary, @@ -443,6 +453,15 @@ function f_refers() { var f_FT vf := valueof(f_FT:refers(f_refers)); } +// for Bug 511976 +testcase tc_modulepar_refer() runs on FuncRef_comp { + if (modulepar_my_intstr.apply(4) == "4") { + setverdict(pass); + } else { + setverdict(fail); + } +} + control { @@ -465,6 +484,7 @@ control execute(tc_runsonself()); execute(tc_functionrefIsbound()); execute(tc_send_tc()); + execute(tc_modulepar_refer()); } } -- GitLab