From 3f93effe62bcc34685ddccb97cd230aa30652d97 Mon Sep 17 00:00:00 2001
From: BenceJanosSzabo <bence.janos.szabo@ericsson.com>
Date: Tue, 28 Mar 2017 15:54:55 +0200
Subject: [PATCH] Anytype again untagged by default

Change-Id: Iae7addef1989dc1acdb4659ec58b3921294793e8
Signed-off-by: BenceJanosSzabo <bence.janos.szabo@ericsson.com>
---
 compiler2/Type.cc                             |  2 +
 compiler2/Type_chk.cc                         |  4 ++
 .../XML/TTCNandXML/AnytypeTest.ttcnpp         | 60 ++-----------------
 3 files changed, 11 insertions(+), 55 deletions(-)

diff --git a/compiler2/Type.cc b/compiler2/Type.cc
index 29137564f..a4dc52835 100644
--- a/compiler2/Type.cc
+++ b/compiler2/Type.cc
@@ -3253,6 +3253,8 @@ namespace Common {
       return p_tt2==T_SET_A || p_tt2==T_SET_T;
     case T_ANY:
       return p_tt2 == T_ANY || p_tt2 == T_OSTR;
+    case T_ANYTYPE:
+      return p_tt2 == T_ANYTYPE;
       // these should never appear?
     case T_REFD:
     case T_REFDSPEC:
diff --git a/compiler2/Type_chk.cc b/compiler2/Type_chk.cc
index 00b8a43d3..c46d1a48c 100644
--- a/compiler2/Type_chk.cc
+++ b/compiler2/Type_chk.cc
@@ -105,6 +105,10 @@ void Type::chk()
     break;
   case T_ANYTYPE:
     // TODO maybe check for address type and add it automagically, then fall through
+    if(!xerattrib) {
+      xerattrib = new XerAttributes;
+    }
+    xerattrib->untagged_ = true;
   case T_SEQ_T:
   case T_SET_T:
   case T_CHOICE_T:
diff --git a/regression_test/XML/TTCNandXML/AnytypeTest.ttcnpp b/regression_test/XML/TTCNandXML/AnytypeTest.ttcnpp
index 61d863eea..d64288605 100644
--- a/regression_test/XML/TTCNandXML/AnytypeTest.ttcnpp
+++ b/regression_test/XML/TTCNandXML/AnytypeTest.ttcnpp
@@ -31,7 +31,7 @@ const universal charstring c_anytype_str_b :=
 "<anytype>\n\t<charstring>str</charstring>\n</anytype>\n\n";
 
 const universal charstring c_anytype_str :=
-"<anytype>\n\t<charstring>str</charstring>\n</anytype>\n\n";
+"<charstring>str</charstring>\n\n";
 
 testcase enc_anytype() runs on SAP
 {
@@ -58,7 +58,7 @@ const universal charstring c_anytypeal_str_b :=
 "<MyAnytype>\n\t<charstring>str</charstring>\n</MyAnytype>\n\n";
 
 const universal charstring c_anytypeal_str :=
-"<MyAnytype>\n\t<charstring>str</charstring>\n</MyAnytype>\n\n";
+"<charstring>str</charstring>\n\n";
 
 testcase enc_anytypealias() runs on SAP
 {
@@ -74,10 +74,7 @@ testcase dec_anytypealias() runs on SAP
 
 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 
-type record of anytype RoAnytype
-with {
-  variant ([-]) "untagged"
-}
+type record of anytype RoAnytype;
 
 DECLARE_XER_ENCODERS(RoAnytype, roat);
 DECLARE_EXER_ENCODERS(RoAnytype, roat);
@@ -121,9 +118,6 @@ type record MyAnytypeRec {
   MyAnytype anytype_field_alias2,
   RoAnytype anytype_field_ro,
   charstring str
-} with {
-  variant (anytype_field) "untagged";
-  variant (anytype_field_alias) "untagged";
 }
 
 DECLARE_XER_ENCODERS(MyAnytypeRec, recat);
@@ -162,12 +156,8 @@ const universal charstring c_myanytyperec_str :=
 "<MyAnytypeRec>\n"&
 "\t<charstring>abc</charstring>\n"&
 "\t<charstring>def</charstring>\n"&
-"\t<anytype_field2>\n"&
-"\t\t<charstring>abcdef</charstring>\n"&
-"\t</anytype_field2>\n"&
-"\t<anytype_field_alias2>\n"&
-"\t\t<charstring>defghi</charstring>\n"&
-"\t</anytype_field_alias2>\n"&
+"\t<charstring>abcdef</charstring>\n"&
+"\t<charstring>defghi</charstring>\n"&
 "\t<anytype_field_ro>\n"&
 "\t\t<charstring>ttt</charstring>\n"&
 "\t\t<integer>4</integer>\n"&
@@ -193,7 +183,6 @@ testcase dec_myanytyperec() runs on SAP
 type record of anytype AnyTypeRo2
 with {
   variant "untagged";
-  variant ([-]) "untagged";
 }
 
 type record MyAnytypeRec2 {
@@ -241,8 +230,6 @@ with {
 
 type record DFERecAnyType {
   anytype at
-} with {
-  variant (at) "untagged";
 }
 
 DECLARE_XER_ENCODERS(DFERecAnyType, dferec);
@@ -261,40 +248,6 @@ testcase tc_dec_anytype_DFE() runs on SAP {
 
 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 
-type record UseNilRecAnyType {
-  anytype at optional
-} with {
-  variant "useNil";
-}
-
-DECLARE_XER_ENCODERS(UseNilRecAnyType, nilrec);
-DECLARE_EXER_ENCODERS(UseNilRecAnyType, nilrec);
-
-const UseNilRecAnyType c_nilrec := {at := {MyBool := true}};
-
-const universal charstring c_nilrec_str_b :=
-"<UseNilRecAnyType>\n"&
-"\t<at>\n"&
-"\t\t<MyBool><true/></MyBool>\n"&
-"\t</at>\n"&
-"</UseNilRecAnyType>\n\n";
-
-const universal charstring c_nilrec_str :=
-"<UseNilRecAnyType>\t<MyBool>true</MyBool>\n</UseNilRecAnyType>\n\n";
-
-testcase tc_enc_anytype_usenil() runs on SAP {
-  CHECK_METHOD(bxer_enc_nilrec, c_nilrec, c_nilrec_str_b);
-  CHECK_METHOD(exer_enc_nilrec, c_nilrec, c_nilrec_str);
-}
-
-testcase tc_dec_anytype_usenil() runs on SAP
-{
-  CHECK_DECODE(bxer_dec_nilrec, c_nilrec_str_b, UseNilRecAnyType, c_nilrec);
-  CHECK_DECODE(exer_dec_nilrec, c_nilrec_str, UseNilRecAnyType, c_nilrec);
-}
-
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
 control {
   execute(enc_anytype());
   execute(dec_anytype());
@@ -312,9 +265,6 @@ control {
   execute(tc_dec_anytype_ro_untagged());
 
   execute(tc_dec_anytype_DFE());
-
-  execute(tc_enc_anytype_usenil());
-  execute(tc_dec_anytype_usenil());
 }
 
 
-- 
GitLab