diff --git a/regression_test/boolOper/TboolOper.ttcn b/regression_test/boolOper/TboolOper.ttcn
index 0407b7b31cf74f3a90304ff6ffe06878c09b3cf6..902c170538673129554c32d38b4b4ec0f712fdc6 100644
--- a/regression_test/boolOper/TboolOper.ttcn
+++ b/regression_test/boolOper/TboolOper.ttcn
@@ -1,21 +1,24 @@
 /******************************************************************************
- * Copyright (c) 2000-2019 Ericsson Telecom AB
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
- *
- * Contributors:
- *   Balasko, Jeno
- *   Baranyi, Botond
- *   Kovacs, Ferenc
- *   Raduly, Csaba
- *   Szabados, Kristof
- *   Szabo, Janos Zoltan – initial implementation
- *
- ******************************************************************************/
+* Copyright (c) 2000-2019 Ericsson Telecom AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+*
+* Contributors:
+*   Balasko, Jeno
+*   Baranyi, Botond
+*   Kovacs, Ferenc
+*   Raduly, Csaba
+*   Szabados, Kristof
+*   Szabo, Janos Zoltan – initial implementation
+*
+******************************************************************************/
 module TboolOper
-{const boolean TboolOper_const1:=true;
+{
+
+modulepar boolean tsp_uninit;
+const boolean TboolOper_const1:=true;
 type component boolOper_comptype { };
 
 testcase boolAssign() runs on boolOper_comptype
@@ -25,23 +28,23 @@ testcase boolAssign() runs on boolOper_comptype
   x2:=false;
   x3:=x2;
   if (x1) {setverdict(pass);}	//at declaration, value
-     else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x4) {setverdict(pass);}	//at declaration, variable
-     else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x2)) {setverdict(pass);}	//later, value
-     else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x3)) {setverdict(pass);}	//later, variable
-     else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolConst() runs on boolOper_comptype {
-const boolean TboolOper_const3:=false;
-if (TboolOper_const1) {setverdict(pass);}	//definition part
-     else {setverdict(fail);}
-//if (TboolOper_const2==2) {setverdict(pass);}	//control part
-//     else {setverdict(fail);}
-if (not(TboolOper_const3)) {setverdict(pass);}	//testcase
-     else {setverdict(fail);}
+  const boolean TboolOper_const3:=false;
+  if (TboolOper_const1) {setverdict(pass);}	//definition part
+  else {setverdict(fail);}
+  //if (TboolOper_const2==2) {setverdict(pass);}	//control part
+  //     else {setverdict(fail);}
+  if (not(TboolOper_const3)) {setverdict(pass);}	//testcase
+  else {setverdict(fail);}
 }
 
 testcase boolCompEq() runs on boolOper_comptype
@@ -50,21 +53,21 @@ testcase boolCompEq() runs on boolOper_comptype
   x2:=true;
   x3:=false;
   if (x1==x2) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x3==x2)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x1==true) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x1==false)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (true==x1) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(false==x1)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (true==true) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(true==false)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolCompNotEq() runs on boolOper_comptype
@@ -73,21 +76,21 @@ testcase boolCompNotEq() runs on boolOper_comptype
   x2:=false;
   x3:=true;
   if (x1!=x2) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x1!=x3)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x1!=false) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x1!=true)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (true!=x2) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(false!=x2)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (true!=false) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(false!=false)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolNot() runs on boolOper_comptype
@@ -99,13 +102,13 @@ testcase boolNot() runs on boolOper_comptype
   x5:=not(true);
   x6:=not(false);
   if (not(x3)) {setverdict(pass);}	//variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x4) {setverdict(pass);}		//variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x5)) {setverdict(pass);}	//value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x6) {setverdict(pass);}		//value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolAnd() runs on boolOper_comptype
@@ -129,37 +132,37 @@ testcase boolAnd() runs on boolOper_comptype
   x17:=false and true;
   x18:=false and false;
   if (x3) {setverdict(pass);}		//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x4)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x5)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x6)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x7) {setverdict(pass);}		//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x8)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x9)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x10)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x11) {setverdict(pass);}		//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x12)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x13)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x14)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x15) {setverdict(pass);}		//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x16)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x17)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x18)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolOr() runs on boolOper_comptype
@@ -183,37 +186,37 @@ testcase boolOr() runs on boolOper_comptype
   x17:=false or true;
   x18:=false or false;
   if (x3) {setverdict(pass);}		//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x4) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x5) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x6)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x7) {setverdict(pass);}		//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x8) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x9) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x10)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x11) {setverdict(pass);}		//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x12) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x13) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x14)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x15) {setverdict(pass);}		//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x16) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x17) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x18)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
 }
 
 testcase boolXor() runs on boolOper_comptype
@@ -237,44 +240,208 @@ testcase boolXor() runs on boolOper_comptype
   x17:=false xor true;
   x18:=false xor false;
   if (not(x3)) {setverdict(pass);}		//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x4) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x5) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x6)) {setverdict(pass);}	//variable_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x7)) {setverdict(pass);}		//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x8) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x9) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x10)) {setverdict(pass);}	//variable_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x11)) {setverdict(pass);}		//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x12) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x13) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x14)) {setverdict(pass);}	//value_variable
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x15)) {setverdict(pass);}		//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x16) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (x17) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
   if (not(x18)) {setverdict(pass);}	//value_value
-   else {setverdict(fail);}
+  else {setverdict(fail);}
+}
+
+testcase boolUninitXor() runs on boolOper_comptype {
+  var boolean x1,x2,x3;
+  x1:=true;
+  @try {
+    x3:=x1 xor x2;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 xor x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:= true xor x2;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 xor true;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+}
+
+testcase boolUninitOr() runs on boolOper_comptype {
+  var boolean x1,x2,x3;
+  x1:=false; 
+  @try {
+    x3:=x1 or x2;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 or x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:= false or x2;
+    if(x3 != true) {setverdict(fail, "true or DTE expected")}
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 or true;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+}
+
+testcase boolUninitAnd() runs on boolOper_comptype {
+  var boolean x1,x2,x3;
+  x1:=true;
+  @try {
+    x3:=x1 and x2;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 and x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:= true and x2;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x3:=x2 and true;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+}
+
+testcase boolUninitNot() runs on boolOper_comptype {
+  var boolean x1,x2;
+  @try {
+    x2:= not x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+}
+
+testcase boolUninitTemplate() runs on boolOper_comptype {
+  var template boolean x2;
+  var boolean x1;
+  @try {
+    x2:= x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x2:= not x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+
+  @try {
+    x1:= valueof(x2);
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+}
+
+testcase boolUninitModulepar() runs on boolOper_comptype {
+  var template boolean x2;
+  var boolean x1 := true;
+  @try {
+    x2:= tsp_uninit;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+  @try {
+    x2:= not tsp_uninit;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
+
+  @try {
+    x2:= tsp_uninit or x1;
+    setverdict(fail, "This line should not reached. DTE expected")
+  } @catch(e) {
+    //check e
+    setverdict(pass);
+  }
 }
 
 type boolean myb1
 type boolean myb2 (true)
 type boolean myb3 (false)
-// FATAL_ERROR() with R8B: `type boolean myb3 (true, valueof(t_myb1))'.
-type boolean myb4 (c_myb1, not c_myb1 and c_myb1)
+// FATAL_ERROR() with R8B: `type boolean myb3 (true, valueof(t_myb1));'
+type boolean myb4 (c_myb1, not c_myb1 and c_myb1);
 type myb3 myb5
 type boolean myb6 (myb2, myb3)
 
@@ -326,7 +493,7 @@ type record TestRecord {
 testcase boolShortCircuit() runs on boolOper_comptype {
   // create a union variable, make sure the boolean field is not chosen
   var TestUnion myUnion := { t := 1 };
-  
+
   // reference the boolean field in the 2nd part of a condition using 'and' or 'or'
   // only the first part of the condition should be evaluated, since
   // evaluating the 2nd part would produce a DTE (because the field isn't chosen)
@@ -347,7 +514,7 @@ testcase boolShortCircuit() runs on boolOper_comptype {
 
   // create a record variable, make sure the boolean field is omitted
   var TestRecord myRec := { t := 1, b := omit };
-  
+
   // reference the boolean field in the 2nd part of a condition, same as with the union field
   // (referencing the boolean field would cause a DTE again, because it is omitted)
   if (ispresent(myRec.b) and myRec.b) {
@@ -394,6 +561,12 @@ control {
   execute(boolIsvalue());
   execute(boolShortCircuit());
   execute(boolCompEqOmit());
+  execute(boolUninitXor());
+  execute(boolUninitOr());
+  execute(boolUninitAnd());
+  execute(boolUninitNot());
+  execute(boolUninitTemplate());
+  execute(boolUninitModulepar());
 }
 
 }