From 69c0215b55e482a976be7c90f2cb696fd96da51e Mon Sep 17 00:00:00 2001
From: Botond Baranyi <botond.baranyi@ericsson.com>
Date: Mon, 25 Jul 2016 15:06:19 +0200
Subject: [PATCH] fixed self-ref check to no longer display errors for omit
 values (bug 498430)

Change-Id: I4a6a3160459761773aeb67aef2dcc1d499eaffd1
Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com>
---
 compiler2/Value.cc                      |  2 +-
 regression_test/boolOper/TboolOper.ttcn | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/compiler2/Value.cc b/compiler2/Value.cc
index e6cf738b2..9a0c0c0a4 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 61e2f5064..515ffd248 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());
 }
 
 }
-- 
GitLab