Wrong code generated for out parameters
Summary
Wrong code is generated for out parameters if the function call is used in the return statement
Steps and/or TTCN-3 code to reproduce
external function dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack(in octetstring stream, out UEparametersUpdatetransparentConatinerTLVE pdu) return integer
with { extension "prototype(backtrack) decode(RAW)" }
function dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack(in octetstring stream, out UEparametersUpdatetransparentConatinerTLVE pdu) return integer {
return dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack('00'O & int2oct(lengthof(stream), 2) & stream, pdu)
}
The generated code:
INTEGER dec__PDU__UEparametersUpdatetransparentConatinerV__backtrack(const OCTETSTRING& stream, UEparametersUpdatetransparentConatinerTLVE& pdu)
{
TTCN_Location current_location("NAS_5GS_Types.ttcn", 69, TTCN_Location::LOCATION_FUNCTION, "dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack");
current_location.update_lineno(70);
/* NAS_5GS_Types.ttcn, line 70 */
{
UEparametersUpdatetransparentConatinerTLVE tmp_0;
return dec__PDU__UEparametersUpdatetransparentConatinerTLVE__backtrack(((os_117 + int2oct(stream.lengthof(), 2)) + stream), tmp_0);
if (tmp_0.is_bound()) pdu = tmp_0;
}
}
What is the current bug behavior?
The value returned by the dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack is lost instead of returned as the pdu out parameter of the dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack
Titan version
10.1.2, 11.0.0
Platform details (OS type and version)
(OS type/distribution and version, e.g. Ubuntu 18.04, Windows 10+Cygwin)
/cc @aknappqwt @mmagyari
Edited by Gábor Szalai