Thanks for reporting this.

I have created https://issues.apache.org/jira/browse/DAFFODIL-2761 for
this.

The Daffodil front end should be issuing a diagnostic here. The only way to
use dfdl:checkConstraints is with the "." argument as in:

dfdl:checkConstraints(.)

So any other usage should be issuing a diagnostic message.


On Mon, Dec 26, 2022 at 9:28 AM Roger L Costello <coste...@mitre.org> wrote:

> I added fn:true() inside dfdl:checkConstraints:
>
>     <xs:simpleType name="validString">
>         <xs:annotation>
>             <xs:appinfo source="http://www.ogf.org/dfdl/";>
>                 <dfdl:assert>{ dfdl:checkConstraints(fn:true())
> }</dfdl:assert>
>             </xs:appinfo>
>         </xs:annotation>
>         <xs:restriction base="xs:string"/>
>     </xs:simpleType>
>
> And Daffodil bombed:
>
> org.apache.daffodil.exceptions.Abort: Invariant broken. Runtime.scala -
> Leaked exception: java.lang.NullPointerException
> : Cannot invoke "org.apache.daffodil.infoset.DIElement.valid()" because
> the return value of "org.apache.daffodil.dpath.D
> State.currentElement()" is null
> java.lang.NullPointerException: Cannot invoke
> "org.apache.daffodil.infoset.DIElement.valid()" because the return value o
> f "org.apache.daffodil.dpath.DState.currentElement()" is null
>         at
> org.apache.daffodil.dpath.DFDLCheckConstraints.run(DFDLFunctions.scala:32)
>         at
> org.apache.daffodil.dpath.CompiledDPath.run(DPathRuntime.scala:141)
>         at
> org.apache.daffodil.dpath.CompiledDPath.runExpression(DPathRuntime.scala:72)
>         at
> org.apache.daffodil.dpath.RuntimeExpressionDPath.evaluateExpression(DPath.scala:251)
>         at
> org.apache.daffodil.dpath.RuntimeExpressionDPath.evaluateMaybe(DPath.scala:262)
>         at
> org.apache.daffodil.dpath.RuntimeExpressionDPath.evaluate(DPath.scala:275)
>         at
> org.apache.daffodil.processors.parsers.ExpressionEvaluationParser.eval(ExpressionEvaluatingParsers.scala:55)
>         at
> org.apache.daffodil.processors.parsers.AssertExpressionEvaluationParser.parse(ExpressionEvaluatingParsers.sca
> la:220)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.ExpressionEvaluationParser.parse1(ExpressionEvaluatingParsers.scala:42
> )
>         at
> org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:185)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
>         at
> org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
>         at
> org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequen
> ceParsers.scala:37)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.sc
> ala:437)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.InfixPrefixSeparatorHelperMixin.parseOneWithInfixOrPrefixSeparator(Sep
> aratedParseHelper.scala:134)
>         at
> org.apache.daffodil.processors.parsers.InfixPrefixSeparatorHelperMixin.parseOneWithInfixOrPrefixSeparator$(Se
> paratedParseHelper.scala:92)
>         at
> org.apache.daffodil.processors.parsers.InfixSeparatorHelper.parseOneWithInfixOrPrefixSeparator(SeparatedParse
> Helper.scala:73)
>         at
> org.apache.daffodil.processors.parsers.InfixSeparatorHelper.parseOneWithSeparator(SeparatedParseHelper.scala:
> 84)
>         at
> org.apache.daffodil.processors.parsers.Separated.parseOne(SeparatedSequenceParsers.scala:44)
>         at
> org.apache.daffodil.processors.parsers.Separated.parseOne$(SeparatedSequenceParsers.scala:43)
>         at
> org.apache.daffodil.processors.parsers.RepOrderedWithMinMaxSeparatedSequenceChildParser.parseOne(SeparatedSeq
> uenceParsers.scala:102)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.sc
> ala:437)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:417)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:157)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.DelimiterStackParser.parse(ElementKindParsers.scala:77)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.HiddenGroupCombinatorParser.parse(HiddenGroupCombinatorParser.scala:40
> )
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
>         at
> org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
>         at
> org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequen
> ceParsers.scala:37)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.sc
> ala:437)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
>         at
> org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
>         at
> org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
>         at
> org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
>         at
> org.apache.daffodil.processors.DataProcessor.doParse(DataProcessor.scala:503)
>         at
> org.apache.daffodil.processors.DataProcessor.parse(DataProcessor.scala:447)
>         at org.apache.daffodil.Main$.$anonfun$run$3(Main.scala:933)
>         at org.apache.daffodil.util.Timer$.getTimeResult(Timer.scala:78)
>         at org.apache.daffodil.util.Timer$.getResult(Timer.scala:37)
>         at org.apache.daffodil.Main$.run(Main.scala:933)
>         at org.apache.daffodil.Main$.main(Main.scala:1577)
>         at org.apache.daffodil.Main.main(Main.scala)
>
> org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:137)
> org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:183)
>
> org.apache.daffodil.processors.DataProcessor.doParse(DataProcessor.scala:562)
> org.apache.daffodil.processors.DataProcessor.parse(DataProcessor.scala:447)
>         at org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:137)
>         at
> org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:183)
>         at
> org.apache.daffodil.processors.DataProcessor.doParse(DataProcessor.scala:562)
>         at
> org.apache.daffodil.processors.DataProcessor.parse(DataProcessor.scala:447)
>         at org.apache.daffodil.Main$.$anonfun$run$3(Main.scala:933)
>         at org.apache.daffodil.util.Timer$.getTimeResult(Timer.scala:78)
>         at org.apache.daffodil.util.Timer$.getResult(Timer.scala:37)
>         at org.apache.daffodil.Main$.run(Main.scala:933)
>         at org.apache.daffodil.Main$.main(Main.scala:1577)
>         at org.apache.daffodil.Main.main(Main.scala)
>

Reply via email to