From ea41bdad099a3a6762ec7a9529d732fe04db100d Mon Sep 17 00:00:00 2001
From: Botond Baranyi <botond.baranyi@ericsson.com>
Date: Thu, 10 May 2018 15:19:42 +0200
Subject: [PATCH] xsd2ttcn: fixed subtype generated for restricted xs:long (bug
 534537)

Change-Id: I91797565cc8dc6e974a7d29b7e8ed28511548374
Signed-off-by: Botond Baranyi <botond.baranyi@ericsson.com>
---
 .../www_example_org_ranges_integer_e.ttcn                   | 6 ++++++
 regression_test/XML/XmlWorkflow/xsd/ranges_integer.xsd      | 6 ++++++
 xsdconvert/SimpleType.cc                                    | 3 +++
 3 files changed, 15 insertions(+)

diff --git a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_ranges_integer_e.ttcn b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_ranges_integer_e.ttcn
index 61404c99d..f99672d14 100644
--- a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_ranges_integer_e.ttcn
+++ b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_ranges_integer_e.ttcn
@@ -91,6 +91,12 @@ with {
 };
 
 
+type XSD.Long LongMin_1 (-1 .. 9223372036854775807)
+with {
+  variant "name as 'longMin-1'";
+};
+
+
 }
 with {
   encode "XML";
diff --git a/regression_test/XML/XmlWorkflow/xsd/ranges_integer.xsd b/regression_test/XML/XmlWorkflow/xsd/ranges_integer.xsd
index f5ef15440..fa8d4edc1 100644
--- a/regression_test/XML/XmlWorkflow/xsd/ranges_integer.xsd
+++ b/regression_test/XML/XmlWorkflow/xsd/ranges_integer.xsd
@@ -65,4 +65,10 @@ targetNamespace="www.example.org/ranges/integer">
 	</restriction>
 </simpleType>
 
+<simpleType name="longMin-1">
+	<restriction base="long">
+		<minInclusive value="-1" />
+	</restriction>
+</simpleType>
+
 </schema>
diff --git a/xsdconvert/SimpleType.cc b/xsdconvert/SimpleType.cc
index e853f9427..47f2d7633 100644
--- a/xsdconvert/SimpleType.cc
+++ b/xsdconvert/SimpleType.cc
@@ -1524,6 +1524,9 @@ void ValueType::applyFacets() // only for integer and float types
     upper = -1;
   } else if (base == "nonNegativeInteger") {
     lower = 0;
+  } else if (base == "long") {
+    lower = LLONG_MIN;
+    upper = LLONG_MAX;
   } else if (base == "unsignedLong") {
     lower = 0;
     upper = ULLONG_MAX;
-- 
GitLab