This is an automated email from the ASF dual-hosted git repository.

olabusayoT pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil.git


The following commit(s) were added to refs/heads/main by this push:
     new 4f1808674 Add Maybe[T].toArray and fix DelimiterTextParser array 
aliasing
4f1808674 is described below

commit 4f180867433be7ebc1e9a36c776b2389fbeaa874
Author: olabusayoT <[email protected]>
AuthorDate: Fri Aug 21 13:01:43 2026 -0400

    Add Maybe[T].toArray and fix DelimiterTextParser array aliasing
    
    Added Maybe[T].toArray, replacing seven hand-rolled .toList.toArray
    call sites across the runtimeDependencies migration to Array (EvElement,
    EvEscapeSchemes, EvFieldDFA, StringLiteralForUnparser, SpecifiedLength2,
    ElementUnparser x2) with a single reusable method.
    
    DAFFODIL-3065
---
 daffodil-core/src/main/scala/org/apache/daffodil/lib/util/Maybe.scala | 2 ++
 .../scala/org/apache/daffodil/runtime1/processors/EvElement.scala     | 2 +-
 .../org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala     | 2 +-
 .../scala/org/apache/daffodil/runtime1/processors/EvFieldDFA.scala    | 2 +-
 .../org/apache/daffodil/unparsers/runtime1/ElementUnparser.scala      | 4 ++--
 .../org/apache/daffodil/unparsers/runtime1/SpecifiedLength2.scala     | 2 +-
 .../apache/daffodil/unparsers/runtime1/StringLiteralForUnparser.scala | 2 +-
 7 files changed, 9 insertions(+), 7 deletions(-)

diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/lib/util/Maybe.scala 
b/daffodil-core/src/main/scala/org/apache/daffodil/lib/util/Maybe.scala
index ca6814809..1d3f7efff 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/lib/util/Maybe.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/lib/util/Maybe.scala
@@ -48,6 +48,8 @@ final class Maybe[+T <: AnyRef](val v: AnyRef) extends AnyVal 
with Serializable
   //  @inline final def iterator: Iterator[T] = if (isEmpty) 
collection.Iterator.empty else collection.Iterator.single(get)
   @inline final def toList: List[T] = if (isEmpty) List() else new ::(get, Nil)
   @inline final def toSeq: Seq[T] = toList
+  @inline final def toArray[U >: T: scala.reflect.ClassTag]: Array[U] =
+    if (isEmpty) Array.empty[U] else Array[U](value)
   // @inline final def getOrElse[U >: T](default: U): U = if (isEmpty) default 
else get
 
   /**
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvElement.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvElement.scala
index 50a07a7e5..d8117cb12 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvElement.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvElement.scala
@@ -183,7 +183,7 @@ class MinLengthInBitsEv(
   ci: DPathCompileInfo
 ) extends LengthInBitsEvBase(ci, lengthUnits, lengthKind) {
 
-  override val runtimeDependencies = maybeCharsetEv.toList.toArray
+  override val runtimeDependencies = maybeCharsetEv.toArray
 
   override protected def lengthInLengthUnits(state: ParseOrUnparseState) = 
minLen
 }
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
index 9e22fc57e..d7e0a0b58 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvEscapeSchemes.scala
@@ -142,7 +142,7 @@ class EscapeSchemeBlockParseEv(
   ci: DPathCompileInfo
 ) extends EscapeSchemeParseEv(ci) {
 
-  override val runtimeDependencies = optEscapeEscapeChar.toList.toArray
+  override val runtimeDependencies = optEscapeEscapeChar.toArray
 
   val bs = EscapeBlockStartCooker.convertConstant(blockStart, ci, forUnparse = 
false)
   val be = EscapeBlockEndCooker.convertConstant(blockEnd, ci, forUnparse = 
false)
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvFieldDFA.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvFieldDFA.scala
index 8e24964fe..b802a926e 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvFieldDFA.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/runtime1/processors/EvFieldDFA.scala
@@ -26,7 +26,7 @@ class FieldDFAParseEv(val escapeSchemeEv: 
Maybe[EscapeSchemeParseEv], ci: DPathC
   extends Evaluatable[DFAField](ci)
   with InfosetCachedEvaluatable[DFAField] {
 
-  override val runtimeDependencies = escapeSchemeEv.toList.toArray
+  override val runtimeDependencies = escapeSchemeEv.toArray
 
   def compute(state: ParseOrUnparseState) = {
 
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/ElementUnparser.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/ElementUnparser.scala
index 2aeb77c82..c1343654b 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/ElementUnparser.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/ElementUnparser.scala
@@ -296,7 +296,7 @@ class ElementSpecifiedLengthUnparser(
   with RegularElementUnparserStartEndStrategy
   with ElementSpecifiedLengthMixin {
 
-  override val runtimeDependencies = maybeTargetLengthEv.toList.toArray
+  override val runtimeDependencies = maybeTargetLengthEv.toArray
 
   override def runContentUnparser(state: UState): Unit = {
     computeTargetLength(
@@ -355,7 +355,7 @@ class ElementOVCSpecifiedLengthUnparser(
   with OVCStartEndStrategy
   with ElementSpecifiedLengthMixin {
 
-  override val runtimeDependencies = maybeTargetLengthEv.toList.toArray
+  override val runtimeDependencies = maybeTargetLengthEv.toArray
 
   private def suspendableExpression =
     new ElementOVCSpecifiedLengthUnparserSuspendableExpression(this, expr)
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/SpecifiedLength2.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/SpecifiedLength2.scala
index 549f7a3c0..e5efbdd00 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/SpecifiedLength2.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/SpecifiedLength2.scala
@@ -210,7 +210,7 @@ class SimpleTypeRetryUnparser(
 ) extends PrimUnparser
   with SuspendableUnparser {
 
-  override final val runtimeDependencies = 
maybeUnparserTargetLengthInBitsEv.toList.toArray
+  override final val runtimeDependencies = 
maybeUnparserTargetLengthInBitsEv.toArray
 
   final override def childProcessors = Vector(vUnparser)
 
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/StringLiteralForUnparser.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/StringLiteralForUnparser.scala
index a3611b512..1689eb81e 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/StringLiteralForUnparser.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/unparsers/runtime1/StringLiteralForUnparser.scala
@@ -33,7 +33,7 @@ class NilStringLiteralForUnparserEv(
 ) extends Evaluatable[String](tci)
   with InfosetCachedEvaluatable[String] {
 
-  override val runtimeDependencies = maybeOutputNewLineEv.toList.toArray
+  override val runtimeDependencies = maybeOutputNewLineEv.toArray
 
   override protected def compute(state: ParseOrUnparseState): String = {
     val endMarker = "__daffodil_stringLiteralForUnparser_endMarker__"

Reply via email to