[ 
https://issues.apache.org/jira/browse/DAFFODIL-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Thompson closed DAFFODIL-2628.
-----------------------------------

Verified the specified commit (commit 45a73676a53b88f177f4c1855232e4f8c4e1a97c) 
is included in the latest pull from the daffodil repository.

Verified, via review, change identified in the commit comment were implemented. 

Verified the affected daffodil subproject sbt test suites executed successfully 
including the added test.

Rolled back to a pre-fix commit, copied the associated .tdml and .scala test 
files and verified that the added test failed for the identified error. 
Verified the error does not occur on the fix commit.

> abort: invariant broken when assert test expression does not return boolean
> ---------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2628
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2628
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End, Middle "End"
>    Affects Versions: 3.2.1
>            Reporter: Mike Beckerle
>            Assignee: Mike McGann
>            Priority: Major
>             Fix For: 3.5.0
>
>
> Debugging a schema I created this little thing to print out a length I wanted 
> to see:
> ```
>         <dfdl:assert test='{ dfdlx:trace(dfdl:valueLength(message, 
> "bytes"),"contentLen")  }'/>
>  
> ```
> Notice the mistake. I forgot to compare the value to 0 in the test. 
> That expression returns an integer.
> If you fix the expression (add " ge 0") then everything works fine.
> But with the mistake you get an abort at runtime:
> ```
> trace contentLen:DataValue(true)
> org.apache.daffodil.exceptions.Abort: Invariant broken. Runtime.scala - 
> Leaked exception: java.lang.ClassCastException: class java.lang.Boolean 
> cannot be cast to class java.lang.Long (java.lang.Boolean and java.lang.Long 
> are in module java.base of loader 'bootstrap')
> java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class 
> java.lang.Long (java.lang.Boolean and java.lang.Long are in module java.base 
> of loader 'bootstrap')
>       at 
> org.apache.daffodil.infoset.DataValue$.getLong$extension(DataValue.scala:78)
>       at 
> org.apache.daffodil.dpath.LongToBoolean$.computeValue(ConverterOps.scala:155)
>       at 
> org.apache.daffodil.dpath.LongToBoolean$.computeValue(ConverterOps.scala:153)
>       at org.apache.daffodil.dpath.Converter.run(DPathRuntime.scala:294)
>       at org.apache.daffodil.dpath.CompiledDPath.run(DPathRuntime.scala:141)
>       at 
> org.apache.daffodil.dpath.CompiledDPath.runExpression(DPathRuntime.scala:72)
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to