diff --git a/compiler2/Value.cc b/compiler2/Value.cc index e6cf738b27d5264e879c4869842a69aa9c9f5f7b..9a0c0c0a4f2828f3b63718928400dc8d0174dfcc 100644 --- a/compiler2/Value.cc +++ b/compiler2/Value.cc @@ -10107,7 +10107,7 @@ error: } } return gov->chk_this_value(v, lhs, Type::EXPECTED_DYNAMIC_VALUE, - INCOMPLETE_NOT_ALLOWED, OMIT_NOT_ALLOWED, NO_SUB_CHK, NOT_IMPLICIT_OMIT, + INCOMPLETE_NOT_ALLOWED, OMIT_ALLOWED, NO_SUB_CHK, NOT_IMPLICIT_OMIT, is_str_elem); } diff --git a/regression_test/boolOper/TboolOper.ttcn b/regression_test/boolOper/TboolOper.ttcn index 61e2f50644321529ce8f53b74c8a05eb6f362d6f..515ffd2482149601986904f3d9980d91a93dccdc 100644 --- a/regression_test/boolOper/TboolOper.ttcn +++ b/regression_test/boolOper/TboolOper.ttcn @@ -366,6 +366,18 @@ testcase boolShortCircuit() runs on boolOper_comptype { setverdict(pass); } +type record MyRecord { + integer a optional +} + +// comparing an optional record field to 'omit' in a boolean variable assignment (bug 498430) +testcase boolCompEqOmit() runs on boolOper_comptype { + var MyRecord myRecord := { a := omit }; + var boolean b := myRecord.a == omit; + if (b == true) { setverdict(pass); } + else { setverdict(fail); } +} + control { const boolean cl_1:=true; var boolean vl_1; @@ -381,6 +393,7 @@ control { execute(boolSubtypes()); execute(boolIsvalue()); execute(boolShortCircuit()); + execute(boolCompEqOmit()); } }