You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by ol...@apache.org on 2026/09/04 19:17:58 UTC
(daffodil) branch main updated: Add Maybe[T].toArray and fix DelimiterTextParser array aliasing
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 <50...@users.noreply.github.com>
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__"