Function with out/inout parameters can be called with parameters received as lazy or fuzzy
Summary
A function A having lazy or fuzzy parameters can call another function B, passing its lazy or fuzzy parameters to B. The problem is that this is not allowed if function B has out or inout parameters. But TITAN allows it (I don't see the logic behind this but point k) in section 5.4.2 of the standard states so).
Steps and/or TTCN-3 code to reproduce
Create a TTCN-3 module, and include this:
type component ct_empty{}
function fn_no_passing_lazy_fuzzy_to_inout_out_function(@lazy integer l, @fuzzy integer f){
var integer vo := 1;
var integer vio := 2;
fn_internal_no_passing_lazy_fuzzy_to_inout_out_function(vo,vio,l,f);
if(vo==l and vio==f){setverdict(pass);}
}
function fn_internal_no_passing_lazy_fuzzy_to_inout_out_function(out integer o, inout integer io, integer i1, integer i2){
o := i1;
io := i2;
}
testcase tc_no_passing_lazy_fuzzy_to_inout_out_function() runs on ct_empty{
fn_no_passing_lazy_fuzzy_to_inout_out_function(3,4);
}
The compile and run.
What is the current bug behavior?
Test case passes.
What is the expected correct behavior?
An error should be received.
Relevant logs and/or screenshots
Possible fixes
Titan version
8.1.2
Platform details (OS type and version)
Microsoft Windows 10 Enterprise 10.0.19042
/cc @aknappqwt