stevedlawrence commented on a change in pull request #12: Revised daffodil-io
module to require passing in a FormatInfo object.
URL: https://github.com/apache/incubator-daffodil/pull/12#discussion_r158339327
##########
File path:
daffodil-runtime1/src/main/scala/edu/illinois/ncsa/daffodil/debugger/InteractiveDebugger.scala
##########
@@ -1078,6 +1078,35 @@ class InteractiveDebugger(runner:
InteractiveDebuggerRunner, eCompilers: Express
// case e: ExpressionEvaluationException => println(e)
// case e: InfosetException => println(e)
// case e: VariableException => println(e)
+
+ //
+ // mbeckerle: I am unsure why this hack is needed now, but was not
before.
+ // Now if we eval(.) on a node that has no value, we get a RSDE
thrown.
+ // I see no code before (or now) to catch this RSDE, to not create
this
+ // RSDE under this situation where the debugger is getting the
error, etc.
+ //
+ // A test in daffodil's cli module sets up a 'display eval (.)' and
then
+ // single steps until on a cell element of a matrix, and at that
point the
+ // cell has not been parsed and so has no value.
+ //
+ // This test test_1326_CLI_Debugger_displaysTesting, used to pass.
+ // Without this hack below, it fails because of the RSDE being
thrown due
+ // to the lack of value in the cell element. The test is expecting
+ // </tns:matrix> which makes no sense, as that would never have been
the
+ // right thing to be displayed in this situation. It should either
print
+ // some representation of no-value, or print the element (which
would be empty)
+ // but there is no explaining it displaying the entire matrix.
+ //
Review comment:
I'm not sure this is really a hack. I think this is the correct thing. I
think the reason this caused a failure now is because some parers removed so it
gets to a certain state earlier. If you the same test on master, but just keep
stepping through, it eventually fails with the same error. So I think is is
correct, as much as it seems like a hack. Only thing I wonder is if we need the
state.setSuccess() on other exceptions. And is that okay to just always
setSuccess? What if the pstate failed, we evail, and then call
state.setSucces(), and now the pstate things it succeeded?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services