From 746fecb2b67f89f157ffcfab239f5de63a3938fd Mon Sep 17 00:00:00 2001
From: BenceJanosSzabo <bence.janos.szabo@ericsson.com>
Date: Mon, 24 Oct 2016 15:29:24 +0200
Subject: [PATCH] XER: usage of Fractiondigits encoding instruction is
 implemented (Bug 506196)

Change-Id: I6053c66638e56af3c20a8a223ad89b3ac0b99f75
Signed-off-by: BenceJanosSzabo <bence.janos.szabo@ericsson.com>
---
 compiler2/Type_chk.cc                         |   9 +-
 compiler2/Type_codegen.cc                     |  10 +-
 compiler2/XerAttributes.cc                    |   7 +
 compiler2/XerAttributes.hh                    |   5 +
 compiler2/ttcn3/rawAST.l                      |   1 +
 compiler2/ttcn3/rawAST.y                      |   8 +-
 core/Float.cc                                 |  32 +++
 core/XER.hh                                   |   8 +-
 .../xer/fractionDigits_SE.ttcn                |  40 +++
 function_test/XER_EncDec/XER_EncDec_TD.script | 183 ++++++++++++
 .../XML/TTCNandXML/FractionDigitsTest.ttcnpp  | 264 ++++++++++++++++++
 regression_test/XML/TTCNandXML/config.cfg     |   1 +
 ..._example_org_decimal_fractiondigits_e.ttcn |   2 +
 regression_test/compileonly/Makefile          |   4 +-
 usrguide/referenceguide.doc                   | Bin 1958912 -> 1938432 bytes
 xsdconvert/RootType.cc                        |   2 +-
 xsdconvert/SimpleType.cc                      |   2 +-
 17 files changed, 568 insertions(+), 10 deletions(-)
 create mode 100644 function_test/Semantic_Analyser/xer/fractionDigits_SE.ttcn
 create mode 100644 regression_test/XML/TTCNandXML/FractionDigitsTest.ttcnpp

diff --git a/compiler2/Type_chk.cc b/compiler2/Type_chk.cc
index 1e2745345..1b6abd4e8 100644
--- a/compiler2/Type_chk.cc
+++ b/compiler2/Type_chk.cc
@@ -2188,7 +2188,14 @@ void Type::chk_xer() { // XERSTUFF semantic check
     if (last->typetype != T_REAL) {
       error("DECIMAL shall only be assigned to a real type");
     }
-  } // if DECIMAL
+    if (xerattrib->has_fractionDigits_) {
+      if (xerattrib->fractionDigits_ < 0) {
+        error("The value of fractionDigits must be equal or greater than zero");
+      }
+    }
+  } else if (xerattrib->has_fractionDigits_) {
+    error("The fractionDigits encoding instruction shall be used with XSD.Decimal types.");
+  } // if DECIMAL 
 
   if (xerattrib->defaultForEmpty_ != 0) {
     chk_xer_dfe();
diff --git a/compiler2/Type_codegen.cc b/compiler2/Type_codegen.cc
index b57e19abe..a0716185a 100644
--- a/compiler2/Type_codegen.cc
+++ b/compiler2/Type_codegen.cc
@@ -505,7 +505,7 @@ void Type::generate_code_xerdescriptor(output_struct* target)
   int atrib=0, any_atr=0, any_elem=0, base64=0, decimal=0, embed=0, list=0,
   text=0, untagged=0, use_nil=0, use_number=0, use_order=0, use_qname=0,
   use_type_attr=0, ws=0, has_1untag=0, form_qualified=0, any_from=0, 
-  any_except=0, nof_ns_uris=0, blocked=0;
+  any_except=0, nof_ns_uris=0, blocked=0, fractionDigits=-1;
   const char* dfe_str = 0;
   char** ns_uris = 0;
   char* oftype_descr_name = 0;
@@ -527,6 +527,7 @@ void Type::generate_code_xerdescriptor(output_struct* target)
     embed   = xerattrib->embedValues_;
     form_qualified = (xerattrib->form_ & XerAttributes::QUALIFIED)
       || (xerattrib->element_); // a global element is always qualified
+    fractionDigits = xerattrib->has_fractionDigits_ ? xerattrib->fractionDigits_ : -1;
     list    = xerattrib->list_;
     untagged= xerattrib->untagged_;
     ws      = xerattrib->whitespace_;
@@ -619,12 +620,12 @@ void Type::generate_code_xerdescriptor(output_struct* target)
     }
     target->source.global_vars = mputstrn(target->source.global_vars, "};\n", 3);
   }
-
+    
   // Generate the XER descriptor itself
   target->source.global_vars = mputprintf(target->source.global_vars,
     "const XERdescriptor_t       %s_xer_ = { {\"%s>\\n\", \"%s>\\n\"},"
     " {%lu, %lu}, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s, WHITESPACE_%s, %c%s, "
-    "&%s, %ld, %u, %s, %s };\n",
+    "&%s, %ld, %u, %s, %s, %i };\n",
     gennameown_str,
     bxer_name.c_str(), last_s.c_str(), // names
     (unsigned long)bxer_len, (unsigned long)last_len, // lengths
@@ -654,7 +655,8 @@ void Type::generate_code_xerdescriptor(output_struct* target)
     ns_index,
     nof_ns_uris,
     (ns_uris_var ? ns_uris_var : "NULL"),
-    (oftype_descr_name ? oftype_descr_name : "NULL")
+    (oftype_descr_name ? oftype_descr_name : "NULL"),
+    fractionDigits
     );
   
   Free(ns_uris_var);
diff --git a/compiler2/XerAttributes.cc b/compiler2/XerAttributes.cc
index 4ddde8e31..ce6238642 100644
--- a/compiler2/XerAttributes.cc
+++ b/compiler2/XerAttributes.cc
@@ -10,6 +10,7 @@
  *   Baranyi, Botond
  *   Raduly, Csaba
  *   Szabados, Kristof
+ *   Szabo, Bence Janos
  *
  ******************************************************************************/
 /*
@@ -44,6 +45,8 @@ XerAttributes::XerAttributes()
 , element_(false)
 , embedValues_(false)
 , form_(UNSET)
+, has_fractionDigits_(false)
+, fractionDigits_(0)
 , hex_(false)
 , list_(false)
 , name_(nochange)
@@ -171,6 +174,7 @@ void XerAttributes::print(const char *type_name) const {
     if (element_) fputs("ELEMENT\n", stderr);
     fputs(embedValues_ ? "EMBED-VALUES\n" : "", stderr);
     fputs((form_ & QUALIFIED) ? "FORM AS QUALIFIED\n" : "", stderr);
+    if (has_fractionDigits_) fprintf(stderr, "FRACTIONDIGITS '%i'\n", fractionDigits_);
     fputs(hex_ ? "hexBinary" : "", stderr);
     fputs(list_ ? "LIST\n" : "", stderr);
 
@@ -283,6 +287,8 @@ other.print("other");
   element_ |= other.element_;
   embedValues_ |= other.embedValues_;
   form_ = other.form_;
+  has_fractionDigits_ = other.has_fractionDigits_;
+  fractionDigits_ = other.fractionDigits_;
   hex_  |= other.hex_;
   list_ |= other.list_;
   if (other.name_.kw_ != NamespaceSpecification::NO_MANGLING) {
@@ -386,6 +392,7 @@ bool XerAttributes::empty() const
   && !element_
   && !embedValues_
   && !(form_ & LOCALLY_SET)
+  && !has_fractionDigits_
   && !hex_
   && !list_
   && name_.kw_ == NamespaceSpecification::NO_MANGLING
diff --git a/compiler2/XerAttributes.hh b/compiler2/XerAttributes.hh
index c3e550de7..c6b44ae71 100644
--- a/compiler2/XerAttributes.hh
+++ b/compiler2/XerAttributes.hh
@@ -9,6 +9,7 @@
  *   Balasko, Jeno
  *   Baranyi, Botond
  *   Raduly, Csaba
+ *   Szabo, Bence Janos
  *
  ******************************************************************************/
 /*
@@ -161,6 +162,10 @@ public:
   bool embedValues_;
   /// Qualified or unqualified form for local elements and attributes
   unsigned short form_;
+  // True if there was fractionDigits variant
+  bool has_fractionDigits_;
+  // fractionDigits on float number
+  int fractionDigits_;
   /// XSD:hexBinary
   bool hex_;
   /// space-separated values for record-of/set-of
diff --git a/compiler2/ttcn3/rawAST.l b/compiler2/ttcn3/rawAST.l
index 00a714172..1fdb1f774 100644
--- a/compiler2/ttcn3/rawAST.l
+++ b/compiler2/ttcn3/rawAST.l
@@ -357,6 +357,7 @@ element 	RETURN(XKWelement);
 elementFormQualified  RETURN(XKWelementFormQualified);
 embedValues     RETURN(XKWembedValues);
 form            RETURN(XKWform);
+fractionDigits RETURN(XKWfractionDigits);
 list		RETURN(XKWlist);
 name		RETURN(XKWname);
 namespace	RETURN(XKWnamespace);
diff --git a/compiler2/ttcn3/rawAST.y b/compiler2/ttcn3/rawAST.y
index 18142e314..945b4bc93 100644
--- a/compiler2/ttcn3/rawAST.y
+++ b/compiler2/ttcn3/rawAST.y
@@ -194,6 +194,7 @@ static void yyprint(FILE *file, int type, const YYSTYPE& value);
 %token XKWelementFormQualified          "elementFormQualified"
 %token XKWembedValues      "embedValues"
 %token XKWform             "form"
+%token XKWfractionDigits   "fractionDigits"
 %token XKWlist             "list"
 %token XKWname             "name"
 %token XKWnamespace        "namespace"
@@ -333,7 +334,7 @@ static void yyprint(FILE *file, int type, const YYSTYPE& value);
 
 %type <nsspec> namespace namespacespecification controlNamespace text
 
-%type <intval> whiteSpace
+%type <intval> whiteSpace fractionDigits
 
     /* destructors */
 %destructor { Free($$); }
@@ -1311,6 +1312,7 @@ XERattribute:
     | XKWelementFormQualified { xerstruct->form_ |= XerAttributes::ELEMENT_DEFAULT_QUALIFIED; }
     | XKWembedValues { xerstruct->embedValues_ = true; }
     | form { xerstruct->form_ |= $1; }
+    | fractionDigits { xerstruct->fractionDigits_ = $1; xerstruct->has_fractionDigits_ = true; }
     | XKWlist { xerstruct->list_ = true; }
     | name
       { /* overwrites any previous name */
@@ -1469,6 +1471,10 @@ defaultForEmpty:
     { $$ = $3; }
 ;
 
+fractionDigits:
+   XKWfractionDigits XNumber
+   { $$ = $2; } 
+
 
 
 whiteSpace:
diff --git a/core/Float.cc b/core/Float.cc
index e01479804..d1820b2f6 100644
--- a/core/Float.cc
+++ b/core/Float.cc
@@ -872,6 +872,14 @@ int FLOAT::XER_encode(const XERdescriptor_t& p_td,
       n = snprintf(buf, sizeof(buf), "%s", XER_NEG_INF_STR);
     } else {
       n = snprintf(buf, sizeof(buf), "%f", (double)float_value);
+      if (p_td.fractionDigits != -1) {
+        char *p = strchr(buf, '.');
+        if (p != NULL) {
+          int offset = p_td.fractionDigits == 0 ? 0 : p_td.fractionDigits + 1;
+          p[offset] = 0;
+          n = strlen(buf);
+        }
+      }
     }
     p_buf.put_s((size_t)n, (const unsigned char*)buf);
   }
@@ -966,6 +974,18 @@ tagless:
     const char * value = (const char *)reader.Value();
     if (value) {
       if (is_float(value)) {
+        if (exer && (p_td.xer_bits & XER_DECIMAL) && p_td.fractionDigits != -1) {
+          char *p = strchr((char*)value, '.');
+          if (p != NULL) {
+            unsigned int fraction_digits_pos = (int)(p - value) + 1 + p_td.fractionDigits;
+            if (fraction_digits_pos < strlen(value)) {
+              TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_FLOAT_TR,
+                "The float value (%s) contains too many fractionDigits. Expected %i or less.",
+                value,
+                p_td.fractionDigits);
+            }
+          }
+        }
         bound_flag = true;
         sscanf(value, "%lf", &float_value);
       } else if (strcmp(XER_NAN_STR, value) == 0 ) {
@@ -1008,6 +1028,18 @@ tagless:
         const char * value = (const char*)reader.Value();
         if (value) {
           if (is_float(value)) {
+            if (exer && (p_td.xer_bits & XER_DECIMAL) && p_td.fractionDigits != -1) {
+              char *p = strchr((char*)value, '.');
+              if (p != NULL) {
+                unsigned int fraction_digits_pos = (int)(p - value) + 1 + p_td.fractionDigits;
+                if (fraction_digits_pos < strlen(value)) {
+                  TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_FLOAT_TR,
+                    "The float value (%s) contains too many fractionDigits. Expected %i or less.",
+                    value,
+                    p_td.fractionDigits);
+                }
+              }
+            }
             bound_flag = true;
             sscanf(value, "%lf", &float_value);
           } else if (strcmp("NaN", value) == 0 ) {
diff --git a/core/XER.hh b/core/XER.hh
index c2bea32e0..d78c2e94c 100644
--- a/core/XER.hh
+++ b/core/XER.hh
@@ -279,6 +279,12 @@ struct XERdescriptor_t
   
   /** Points to the element type's XER descriptor in case of 'record of' and 'set of' types */
   const XERdescriptor_t* oftype_descr;
+  
+  /** Fraction digits value
+    * It is already checked that is must not be a negative number.
+    * The -1 value is used to determine if fractionDigits encoding instruction is present,
+    * so if the value is -1, no checks will be made. */
+  const int fractionDigits;
 };
 
 /** Information related to the embedded values in XML encoding
@@ -448,7 +454,7 @@ void check_namespace_restrictions(const XERdescriptor_t& p_td, const char* p_xml
   extern const XERdescriptor_t type_name##_xer_ = { \
     { xmlname ">\n", xmlname ">\n" }, \
     { 2+sizeof(xmlname)-1, 2+sizeof(xmlname)-1 }, \
-    0UL, WHITESPACE_PRESERVE, NULL, NULL, 0, 0, NULL, NULL }
+    0UL, WHITESPACE_PRESERVE, NULL, NULL, 0, 0, NULL, NULL, -1 }
 // The compiler should fold the two identical strings into one
 
 # define XER_STRUCT_COPY(cpy,original) \
diff --git a/function_test/Semantic_Analyser/xer/fractionDigits_SE.ttcn b/function_test/Semantic_Analyser/xer/fractionDigits_SE.ttcn
new file mode 100644
index 000000000..9e1a47dc8
--- /dev/null
+++ b/function_test/Semantic_Analyser/xer/fractionDigits_SE.ttcn
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * Copyright (c) 2000-2016 Ericsson Telecom AB
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Szabo, Bence Janos
+ *
+ ******************************************************************************/
+module fractionDigits_SE {	//^In TTCN-3 module `fractionDigits_SE'://
+
+type float MyFloat //^In type definition// //^error: The fractionDigits encoding instruction shall be used with XSD\.Decimal types\.//
+with {
+  variant "fractionDigits 2";
+};
+
+
+type float MyFloat2
+with {
+  variant "fractionDigits 2";
+  variant "XSD:decimal"
+};
+
+type float MyFloat3; 
+
+type record MyRec { //^In type definition//
+  MyFloat3 myfloat //^In record field// //^error: The fractionDigits encoding instruction shall be used with XSD\.Decimal types//
+} 
+with {
+  variant (myfloat) "fractionDigits 2";
+  variant (myfloat) "attribute";
+};
+
+
+}
+with {
+  encode "XML";
+}
diff --git a/function_test/XER_EncDec/XER_EncDec_TD.script b/function_test/XER_EncDec/XER_EncDec_TD.script
index 7a0c238df..4e5a7e3c6 100644
--- a/function_test/XER_EncDec/XER_EncDec_TD.script
+++ b/function_test/XER_EncDec/XER_EncDec_TD.script
@@ -71,6 +71,189 @@ A     2014-04-29   EBOTBAR    New document
 .*---------------------------------------------------------------------*
 :h4. Encoding record template with explicitly unspecified field
 .*---------------------------------------------------------------------*
+
+.*---------------------------------------------------------------------*
+:h4. Too many fraction digits when fractionDigits is 2
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Too many fraction digits when fractionDigits is 2>
+
+<STATIC>
+
+type component Test_CT{};
+
+<TTCN_TC:PURE_EXEC>
+
+type float MyFloat
+with {
+  encode "XML";
+  variant "fractionDigits 2";
+  variant "XSD:decimal";
+};
+
+external function ef_xer_dec(in octetstring par) return MyFloat
+  with { extension "prototype(convert) decode (XER:XER_EXTENDED) errorbehavior(ALL:ERROR)" }
+
+testcase tc_dec_fractiondigits() runs on Test_CT {
+  var universal charstring xml := "<MyFloat>1234567890.111</MyFloat>\n";
+  ef_xer_dec(unichar2oct(xml));
+  setverdict(pass);
+}
+
+control {
+  execute(tc_dec_fractiondigits());
+}
+
+<RESULT>
+
+Dynamic test case error: While XER-decoding type '@Temp.MyFloat': The float value (1234567890.111) contains too many fractionDigits. Expected 2 or less
+
+<END_TC>  
+  
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h4. Too many fraction digits when fractionDigits is 0
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Too many fraction digits when fractionDigits is 0>
+
+<STATIC>
+
+type component Test_CT{};
+
+<TTCN_TC:PURE_EXEC>
+
+type float MyFloat
+with {
+  encode "XML";
+  variant "fractionDigits 0";
+  variant "XSD:decimal";
+};
+
+external function ef_xer_dec(in octetstring par) return MyFloat
+  with { extension "prototype(convert) decode (XER:XER_EXTENDED) errorbehavior(ALL:ERROR)" }
+
+testcase tc_dec_fractiondigits() runs on Test_CT {
+  var universal charstring xml := "<MyFloat>1234567890.1</MyFloat>\n";
+  ef_xer_dec(unichar2oct(xml));
+  setverdict(pass);
+}
+
+control {
+  execute(tc_dec_fractiondigits());
+}
+
+<RESULT>
+
+Dynamic test case error: While XER-decoding type '@Temp.MyFloat': The float value (1234567890.1) contains too many fractionDigits. Expected 0 or less
+
+<END_TC>  
+  
+:exmp.
+
+
+.*---------------------------------------------------------------------*
+:h4. Too many fraction digits when fractionDigits is 2 in attribute
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Too many fraction digits when fractionDigits is 2 in attribute>
+
+<STATIC>
+
+type component Test_CT{};
+
+<TTCN_TC:PURE_EXEC>
+
+type float MyFloat
+with {
+  encode "XML";
+  variant "XSD:decimal";
+};
+
+type record MyRec {
+  MyFloat myfloat
+} 
+with {
+  encode "XML";
+  variant (myfloat) "fractionDigits 2";
+  variant (myfloat) "attribute";
+};
+
+external function ef_xer_dec(in octetstring par) return MyRec
+  with { extension "prototype(convert) decode (XER:XER_EXTENDED) errorbehavior(ALL:ERROR)" }
+
+testcase tc_dec_fractiondigits_attr() runs on Test_CT {
+  var universal charstring xml := "<MyRec myfloat='1234567890.111'></MyRec>\n";
+  ef_xer_dec(unichar2oct(xml));
+  setverdict(pass);
+}
+
+control {
+  execute(tc_dec_fractiondigits_attr());
+}
+
+<RESULT>
+
+Dynamic test case error: While XER-decoding type '@Temp.MyRec': Component 'myfloat': The float value (1234567890.111) contains too many fractionDigits. Expected 2 or less.
+
+<END_TC>  
+  
+:exmp.
+
+.*---------------------------------------------------------------------*
+:h4. Too many fraction digits when fractionDigits is 0 in attribute
+.*---------------------------------------------------------------------*
+:xmp tab=0.
+
+<TC - Too many fraction digits when fractionDigits is 0 in attribute>
+
+<STATIC>
+
+type component Test_CT{};
+
+<TTCN_TC:PURE_EXEC>
+
+type float MyFloat
+with {
+  encode "XML";
+  variant "XSD:decimal";
+};
+
+type record MyRec {
+  MyFloat myfloat
+} 
+with {
+  encode "XML";
+  variant (myfloat) "fractionDigits 0";
+  variant (myfloat) "attribute";
+};
+
+external function ef_xer_dec(in octetstring par) return MyRec
+  with { extension "prototype(convert) decode (XER:XER_EXTENDED) errorbehavior(ALL:ERROR)" }
+
+testcase tc_dec_fractiondigits_attr() runs on Test_CT {
+  var universal charstring xml := "<MyRec myfloat='1234567890.1'></MyRec>\n";
+  ef_xer_dec(unichar2oct(xml));
+  setverdict(pass);
+}
+
+control {
+  execute(tc_dec_fractiondigits_attr());
+}
+
+<RESULT>
+
+Dynamic test case error: While XER-decoding type '@Temp.MyRec': Component 'myfloat': The float value (1234567890.1) contains too many fractionDigits. Expected 0 or less.
+
+<END_TC>  
+  
+:exmp.
+
+
 :xmp tab=0.
 
 <TC - Encoding record with any element from unqualified namespace>
diff --git a/regression_test/XML/TTCNandXML/FractionDigitsTest.ttcnpp b/regression_test/XML/TTCNandXML/FractionDigitsTest.ttcnpp
new file mode 100644
index 000000000..725daa949
--- /dev/null
+++ b/regression_test/XML/TTCNandXML/FractionDigitsTest.ttcnpp
@@ -0,0 +1,264 @@
+/******************************************************************************
+ * Copyright (c) 2000-2016 Ericsson Telecom AB
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Szabo, Bence Janos
+ *
+ ******************************************************************************/
+module FractionDigitsTest {
+
+modulepar boolean FractionDigitsTest_verbose := false;
+#define verbose FractionDigitsTest_verbose
+
+#include "../macros.ttcnin"
+
+type float MyFloatDecimal2
+with {
+  variant "XSD:decimal"
+  variant "fractionDigits 2"
+}
+
+type float MyFloatDecimal0
+with {
+  variant "XSD:decimal"
+  variant "fractionDigits 0"
+}
+
+type record MyRec { 
+  MyFloatDecimal2 myfloat
+} 
+with {
+  variant (myfloat) "fractionDigits 2";
+  variant (myfloat) "attribute";
+};
+
+
+type component FDT {}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+DECLARE_XER_ENCODERS(MyFloatDecimal2, fdec2)
+DECLARE_EXER_ENCODERS(MyFloatDecimal2, fdec2)
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+const MyFloatDecimal2 myfdec2 := 12345.6789;
+const universal charstring c_myfxml2_bxer := "<MyFloatDecimal2>12345.678900</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_exer := "<MyFloatDecimal2>12345.67</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_2 := 12345.1;
+const universal charstring c_myfxml2_2_bxer := "<MyFloatDecimal2>12345.100000</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_2_exer := "<MyFloatDecimal2>12345.10</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_3 := 12345E-4;
+const universal charstring c_myfxml2_3_bxer := "<MyFloatDecimal2>1.234500</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_3_exer := "<MyFloatDecimal2>1.23</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_4 := 12345E-1;
+const universal charstring c_myfxml2_4_bxer := "<MyFloatDecimal2>1234.500000</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_4_exer := "<MyFloatDecimal2>1234.50</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_5 := 12345E+0;
+const universal charstring c_myfxml2_5_bxer := "<MyFloatDecimal2>12345.000000</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_5_exer := "<MyFloatDecimal2>12345.00</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_6 := 12345E-0;
+const universal charstring c_myfxml2_6_bxer := "<MyFloatDecimal2>12345.000000</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_6_exer := "<MyFloatDecimal2>12345.00</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_7 := 12345E+1;
+const universal charstring c_myfxml2_7_bxer := "<MyFloatDecimal2>123450.000000</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_7_exer := "<MyFloatDecimal2>123450.00</MyFloatDecimal2>\n";
+
+const MyFloatDecimal2 myfdec2_8 := 1234567890.0987654321;
+const universal charstring c_myfxml2_8_bxer := "<MyFloatDecimal2>1234567890.098770</MyFloatDecimal2>\n";
+const universal charstring c_myfxml2_8_exer := "<MyFloatDecimal2>1234567890.09</MyFloatDecimal2>\n";
+
+testcase float_decimal_enc2() runs on FDT
+{
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2, c_myfxml2_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2, c_myfxml2_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_2, c_myfxml2_2_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_2, c_myfxml2_2_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_3, c_myfxml2_3_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_3, c_myfxml2_3_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_4, c_myfxml2_4_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_4, c_myfxml2_4_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_5, c_myfxml2_5_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_5, c_myfxml2_5_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_6, c_myfxml2_6_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_6, c_myfxml2_6_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_7, c_myfxml2_7_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_7, c_myfxml2_7_exer);
+
+  CHECK_METHOD(bxer_enc_fdec2, myfdec2_8, c_myfxml2_8_bxer);
+  CHECK_METHOD(exer_enc_fdec2, myfdec2_8, c_myfxml2_8_exer);
+}
+
+testcase float_decimal_dec2() runs on FDT
+{
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_bxer, MyFloatDecimal2, myfdec2);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_exer, MyFloatDecimal2, 12345.670000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_2_bxer, MyFloatDecimal2, myfdec2_2);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_2_exer, MyFloatDecimal2, 12345.100000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_3_bxer, MyFloatDecimal2, myfdec2_3);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_3_exer, MyFloatDecimal2, 1.230000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_4_bxer, MyFloatDecimal2, myfdec2_4);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_4_exer, MyFloatDecimal2, 1234.500000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_5_bxer, MyFloatDecimal2, myfdec2_5);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_5_exer, MyFloatDecimal2, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_6_bxer, MyFloatDecimal2, myfdec2_6);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_6_exer, MyFloatDecimal2, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_7_bxer, MyFloatDecimal2, myfdec2_7);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_7_exer, MyFloatDecimal2, 123450.000000);
+
+  CHECK_DECODE(bxer_dec_fdec2, c_myfxml2_8_bxer, MyFloatDecimal2, myfdec2_8);
+  CHECK_DECODE(exer_dec_fdec2, c_myfxml2_8_exer, MyFloatDecimal2, 1234567890.090000);
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+DECLARE_XER_ENCODERS(MyFloatDecimal0, fdec0)
+DECLARE_EXER_ENCODERS(MyFloatDecimal0, fdec0)
+
+const MyFloatDecimal0 myfdec0 := 12345.6789;
+const universal charstring c_myfxml0_bxer := "<MyFloatDecimal0>12345.678900</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_exer := "<MyFloatDecimal0>12345</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_2 := 12345.1;
+const universal charstring c_myfxml0_2_bxer := "<MyFloatDecimal0>12345.100000</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_2_exer := "<MyFloatDecimal0>12345</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_3 := 12345E-4;
+const universal charstring c_myfxml0_3_bxer := "<MyFloatDecimal0>1.234500</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_3_exer := "<MyFloatDecimal0>1</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_4 := 12345E-1;
+const universal charstring c_myfxml0_4_bxer := "<MyFloatDecimal0>1234.500000</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_4_exer := "<MyFloatDecimal0>1234</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_5 := 12345E+0;
+const universal charstring c_myfxml0_5_bxer := "<MyFloatDecimal0>12345.000000</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_5_exer := "<MyFloatDecimal0>12345</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_6 := 12345E-0;
+const universal charstring c_myfxml0_6_bxer := "<MyFloatDecimal0>12345.000000</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_6_exer := "<MyFloatDecimal0>12345</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_7 := 12345E+1;
+const universal charstring c_myfxml0_7_bxer := "<MyFloatDecimal0>123450.000000</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_7_exer := "<MyFloatDecimal0>123450</MyFloatDecimal0>\n";
+
+const MyFloatDecimal0 myfdec0_8 := 1234567890.0987654321;
+const universal charstring c_myfxml0_8_bxer := "<MyFloatDecimal0>1234567890.098770</MyFloatDecimal0>\n";
+const universal charstring c_myfxml0_8_exer := "<MyFloatDecimal0>1234567890</MyFloatDecimal0>\n";
+
+testcase float_decimal_enc0() runs on FDT
+{
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0, c_myfxml0_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0, c_myfxml0_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_2, c_myfxml0_2_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_2, c_myfxml0_2_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_3, c_myfxml0_3_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_3, c_myfxml0_3_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_4, c_myfxml0_4_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_4, c_myfxml0_4_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_5, c_myfxml0_5_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_5, c_myfxml0_5_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_6, c_myfxml0_6_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_6, c_myfxml0_6_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_7, c_myfxml0_7_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_7, c_myfxml0_7_exer);
+
+  CHECK_METHOD(bxer_enc_fdec0, myfdec0_8, c_myfxml0_8_bxer);
+  CHECK_METHOD(exer_enc_fdec0, myfdec0_8, c_myfxml0_8_exer);
+}
+
+testcase float_decimal_dec0() runs on FDT
+{
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_bxer, MyFloatDecimal0, myfdec0);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_exer, MyFloatDecimal0, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_2_bxer, MyFloatDecimal0, myfdec0_2);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_2_exer, MyFloatDecimal0, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_3_bxer, MyFloatDecimal0, myfdec0_3);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_3_exer, MyFloatDecimal0, 1.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_4_bxer, MyFloatDecimal0, myfdec0_4);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_4_exer, MyFloatDecimal0, 1234.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_5_bxer, MyFloatDecimal0, myfdec0_5);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_5_exer, MyFloatDecimal0, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_6_bxer, MyFloatDecimal0, myfdec0_6);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_6_exer, MyFloatDecimal0, 12345.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_7_bxer, MyFloatDecimal0, myfdec0_7);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_7_exer, MyFloatDecimal0, 123450.000000);
+
+  CHECK_DECODE(bxer_dec_fdec0, c_myfxml0_8_bxer, MyFloatDecimal0, myfdec0_8);
+  CHECK_DECODE(exer_dec_fdec0, c_myfxml0_8_exer, MyFloatDecimal0, 1234567890.000000);
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+DECLARE_XER_ENCODERS(MyRec, frec)
+DECLARE_EXER_ENCODERS(MyRec, frec)
+
+const MyRec c_myrec := { myfloat := 1234.5678 };
+
+const universal charstring c_myrec_bxer := "<MyRec>\n\t<myfloat>1234.567800</myfloat>\n</MyRec>\n\n";
+
+const universal charstring c_myrec_exer := "<MyRec myfloat='1234.56'/>\n\n";
+
+testcase float_decimal_attr_enc() runs on FDT {
+  CHECK_METHOD(bxer_enc_frec, c_myrec, c_myrec_bxer);
+  CHECK_METHOD(exer_enc_frec, c_myrec, c_myrec_exer);
+}
+
+testcase float_decimal_attr_dec() runs on FDT {
+  CHECK_DECODE(bxer_dec_frec, c_myrec_bxer, MyRec, c_myrec);
+  var MyRec local_rec := c_myrec;
+  local_rec.myfloat := 1234.560000;
+  CHECK_DECODE(exer_dec_frec, c_myrec_exer, MyRec, local_rec);
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+control {
+  execute(float_decimal_enc2());
+  execute(float_decimal_dec2());
+
+  execute(float_decimal_enc0());
+  execute(float_decimal_dec0());
+
+  execute(float_decimal_attr_enc());
+  execute(float_decimal_attr_dec());
+}
+
+}
+with { encode "XML" }
+
diff --git a/regression_test/XML/TTCNandXML/config.cfg b/regression_test/XML/TTCNandXML/config.cfg
index 6e95da598..f2344b4a5 100644
--- a/regression_test/XML/TTCNandXML/config.cfg
+++ b/regression_test/XML/TTCNandXML/config.cfg
@@ -29,6 +29,7 @@ DFEAttribTest
 #DFEAttribTest.stopper
 Marx
 Regressions
+FractionDigitsTest
 
 [LOGGING]
 FileMask := LOG_ALL | USER | DEBUG_ENCDEC
diff --git a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_decimal_fractiondigits_e.ttcn b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_decimal_fractiondigits_e.ttcn
index 02874c961..d6b7347fd 100644
--- a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_decimal_fractiondigits_e.ttcn
+++ b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_decimal_fractiondigits_e.ttcn
@@ -47,6 +47,7 @@ import from XSD all;
 type XSD.Decimal CelsiusBodyTemp (-9999.0 .. 9999.0)
 with {
   variant "name as uncapitalized";
+  variant "fractionDigits 1";
 };
 
 
@@ -60,6 +61,7 @@ with {
   variant "name as uncapitalized";
   variant "useUnion";
   variant "element";
+  variant (alt_) "fractionDigits 1";
   variant (alt_) "name as ''";
   variant (alt_1) "name as ''";
   variant (alt_2) "name as ''";
diff --git a/regression_test/compileonly/Makefile b/regression_test/compileonly/Makefile
index f76cf23ff..34a50e9d6 100644
--- a/regression_test/compileonly/Makefile
+++ b/regression_test/compileonly/Makefile
@@ -13,6 +13,7 @@
 #   Kovacs, Ferenc
 #   Raduly, Csaba
 #   Szabados, Kristof
+#   Szabo, Bence Janos
 #   Szabo, Janos Zoltan – initial implementation
 #
 ##############################################################################
@@ -26,7 +27,8 @@ CODIRS := dynamicTemplate styleGuide topLevelPdu \
 	openType optionalAssignCompare portConstructor \
 	isbound namedActualParameters assignmentNotation \
 	attribQualif HT48786 selectCase openTypeNames \
-	defaultParamUsageBeforeDecl deterministic readFromFile
+	defaultParamUsageBeforeDecl deterministic readFromFile \
+	asn1_hyphen
 
 all dep clean distclean:
 	for dir in $(CODIRS); do $(MAKE) -C $$dir $@ || exit; done
diff --git a/usrguide/referenceguide.doc b/usrguide/referenceguide.doc
index e9360f8584229b00214a8cc2a3c8b13a59e3921a..51752b91fb522c85e489a9c3321629659ffde80c 100644
GIT binary patch
delta 60720
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
CBHJtg

delta 77236
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

diff --git a/xsdconvert/RootType.cc b/xsdconvert/RootType.cc
index 1798667e1..efad1b935 100644
--- a/xsdconvert/RootType.cc
+++ b/xsdconvert/RootType.cc
@@ -168,7 +168,7 @@ void RootType::addVariant(const VariantMode var, const Mstring& var_value, const
       variantstring = "\"whiteSpace " + var_value + "\"";
       break;
     case V_fractionDigits:
-      //variantstring = "\"fractionDigits " + var_value + "\"";
+      variantstring = "\"fractionDigits " + var_value + "\"";
       break;
   }
 
diff --git a/xsdconvert/SimpleType.cc b/xsdconvert/SimpleType.cc
index 6a277e2f3..4be2edf2d 100644
--- a/xsdconvert/SimpleType.cc
+++ b/xsdconvert/SimpleType.cc
@@ -227,7 +227,7 @@ void SimpleType::loadWithValues() {
       value.modified = true;
       break;
     case n_fractionDigits:
-      //addVariant(V_fractionDigits, atts.value);
+      addVariant(V_fractionDigits, atts.value);
       break;
     case n_label:
       addComment(Mstring("LABEL:"));
-- 
GitLab