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

jadams 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 62d7bbe  Improve diagnostic for no forward progress
62d7bbe is described below

commit 62d7bbe69847d85c780f40855c5cfef29a5a7c23
Author: Josh Adams <[email protected]>
AuthorDate: Thu Feb 17 11:29:30 2022 -0500

    Improve diagnostic for no forward progress
    
    Improved diagnostic message now contains reference to the array and
    describes how it is stuck in an infinite loop.
    
    DAFFODIL-2576
---
 .../org/apache/daffodil/processors/parsers/SequenceChildBases.scala  | 2 +-
 .../org/apache/daffodil/processors/parsers/SequenceParserBases.scala | 5 +++--
 test-stdLayout/src/test/resources/org1/testStdLayout.tdml            | 4 +++-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
index 648cd52..ad591f0 100644
--- 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
+++ 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
@@ -197,7 +197,7 @@ abstract class SequenceChildParser(
   val childParser: Parser,
   val srd: SequenceRuntimeData,
   val trd: TermRuntimeData)
-  extends CombinatorParser(srd) {
+  extends CombinatorParser(trd) {
 
   override def childProcessors: Vector[Processor] = Vector(childParser)
 
diff --git 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceParserBases.scala
 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceParserBases.scala
index 47d3538..80e9daf 100644
--- 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceParserBases.scala
+++ 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceParserBases.scala
@@ -57,12 +57,13 @@ abstract class SequenceParserBase(
 
   final protected def checkForwardProgress(
     pstate: PState,
+    parser: RepeatingChildParser,
     currentPos: Long,
     priorPos: Long,
     ais: ArrayIndexStatus): ArrayIndexStatus = {
     Assert.invariant(currentPos >= priorPos)
     if (currentPos == priorPos && pstate.groupPos > 1) {
-      PE(pstate, "No forward progress.")
+      parser.PE(pstate, "Array element parsed succesfully, but consumed no 
data and is stuck in an infinite loop as it is unbounded.")
       Done
     } else {
       ais
@@ -173,7 +174,7 @@ abstract class SequenceParserBase(
                 // result of try could also be absent if we just ended a group
                 // by not finding a separator
                 //
-                ais = checkForwardProgress(pstate, currentPos, priorPos, ais)
+                ais = checkForwardProgress(pstate, parser, currentPos, 
priorPos, ais)
               }
               //
               // advance array position.
diff --git a/test-stdLayout/src/test/resources/org1/testStdLayout.tdml 
b/test-stdLayout/src/test/resources/org1/testStdLayout.tdml
index 0207ac3..19e1baa 100644
--- a/test-stdLayout/src/test/resources/org1/testStdLayout.tdml
+++ b/test-stdLayout/src/test/resources/org1/testStdLayout.tdml
@@ -34,7 +34,9 @@
       <tdml:documentPart 
type="file">org1/test-outer-data1.txt</tdml:documentPart>
     </tdml:document>
     <tdml:errors>
-      <tdml:error>No forward progress</tdml:error>
+      <tdml:error>consumed no data</tdml:error>
+      <tdml:error>infinite loop</tdml:error>
+      <tdml:error>inner:Inner</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
   

Reply via email to