diff --git a/compiler2/ttcn3/AST_ttcn3.cc b/compiler2/ttcn3/AST_ttcn3.cc index 2bc045e2b9e7907268fbeee62a07c9fb039a6cf9..30393a8fd17ae4b963238cf7b77c3d0b94a7a2b8 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 99c7b06355308310bb6d700156ec70c6700d828e..ff99e58317579791fac916c9b9ee2bca89916d43 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()); } }