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

Steve Lawrence resolved DAFFODIL-2891.
--------------------------------------
    Resolution: Fixed

Fixed in commit 5ca4319c83da3d5caf5d9e17ce6a05a021e621ab

> Abort: Invariant broken: minReps.==(0L) when unparsing
> ------------------------------------------------------
>
>                 Key: DAFFODIL-2891
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2891
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Unparsing
>            Reporter: Steve Lawrence
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 3.8.0
>
>
> If we have a schema with an array with occursCountKind="expression" and 
> minOccurs greater than zero, and we unparse an infoset where there are zero 
> occurrences, we get an abort assertion. This is not a valid infoset, but we 
> should get an UnparseError instead of an abort.
> *Schema:*
> {code:xml}
>   <simpleType name="oneNum" dfdl:lengthKind="explicit" dfdl:length="1">
>     <restriction base="xs:int" />
>   </simpleType>
>   <element name="root">
>     <complexType>
>       <sequence>
>         <element name="field1Occurs" type="ex:oneNum" />
>         <element name="field1" type="ex:oneNum" minOccurs="1" maxOccurs="255"
>           dfdl:occursCountKind="expression" dfdl:occursCount="{ 
> ../field1Occurs }" />
>         <element name="field2" type="ex:oneNum" minOccurs="1" maxOccurs="255"
>           dfdl:occursCountKind="parsed" />
>       </sequence>
>     </complexType>
>   </element>
> {code}
> *Infoset:*
> {code:xml}
> <ex:root xmlns:ex="http://example.com";>
>   <field1Occurs>0</field1Occurs>
>   <field2>1</field2>
>   <field2>2</field2>
>   <field2>3</field2>
>   <field2>4</field2>
> </ex:root>
> {code}
> *Error:*
> {code}
> org.apache.daffodil.lib.exceptions.Abort: Invariant broken: minReps.==(0L)
> org.apache.daffodil.lib.exceptions.Assert$.abort(Assert.scala:159)
> org.apache.daffodil.unparsers.runtime1.OrderedUnseparatedSequenceUnparser.unparse(UnseparatedSequenceUnparsers.scala:159)
> org.apache.daffodil.runtime1.processors.unparsers.Unparser.unparse1(Unparser.scala:75)
> org.apache.daffodil.runtime1.processors.unparsers.Unparser.unparse1$(Unparser.scala:38)
>       at org.apache.daffodil.lib.exceptions.Assert$.abort(Assert.scala:159)
>       at 
> org.apache.daffodil.unparsers.runtime1.OrderedUnseparatedSequenceUnparser.unparse(UnseparatedSequenceUnparsers.scala:159)
>       at 
> org.apache.daffodil.runtime1.processors.unparsers.Unparser.unparse1(Unparser.scala:75)
>       at 
> org.apache.daffodil.runtime1.processors.unparsers.Unparser.unparse1$(Unparser.scala:38)
>       at 
> org.apache.daffodil.runtime1.processors.unparsers.CombinatorUnparser.unparse1(Unparser.scala:124)
>       at 
> org.apache.daffodil.unparsers.runtime1.ElementUnparserBase.runContentUnparser(ElementUnparser.scala:181)
>       at 
> org.apache.daffodil.unparsers.runtime1.ElementUnparserBase.unparse(ElementUnparser.scala:202)
> {code}



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

Reply via email to