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__"