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) >