mbeckerle commented on code in PR #1337:
URL: https://github.com/apache/daffodil/pull/1337#discussion_r1840585262


##########
daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/unparsers/runtime1/BinaryNumberUnparsers.scala:
##########
@@ -78,17 +76,58 @@ abstract class BinaryNumberBaseUnparser(override val 
context: ElementRuntimeData
 
 }
 
-abstract class BinaryIntegerBaseUnparser(e: ElementRuntimeData, signed: 
Boolean)
+abstract class BinaryIntegerBaseUnparser(e: ElementRuntimeData)
   extends BinaryNumberBaseUnparser(e) {
 
+  private val primNumeric = 
e.optPrimType.get.asInstanceOf[NodeInfo.PrimType.PrimNumeric]
+
   override def putNumber(
     dos: DataOutputStream,
     value: JNumber,
     nBits: Int,
     finfo: FormatInfo
   ): Boolean = {
+    val state = finfo.asInstanceOf[UState]
+    if (primNumeric.minWidth.isDefined) {
+      val minWidth = primNumeric.minWidth.get
+      if (nBits < minWidth) {
+        val isSigned = primNumeric.isSigned
+        val signedStr = if (isSigned) "a signed" else "an unsigned"
+        val outOfRangeFmtStr =
+          "Minimum length for %s binary integer is %d bit(s), number of bits 
%d out of range. " +
+            "An unsigned integer with length 1 bit could be used instead."
+        if (isSigned && state.tunable.allowSignedIntegerLength1Bit && nBits == 
1) {
+          state.SDW(

Review Comment:
   I'm in favor of silent success at runtime if the flag is set to allow 1-bit 
signed (for compatibility), and parse-error if the flag is not set. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to