Steve Lawrence created DAFFODIL-1964: ----------------------------------------
Summary: Unparsing ArrayCombinator assertion failure Key: DAFFODIL-1964 URL: https://issues.apache.org/jira/browse/DAFFODIL-1964 Project: Daffodil Issue Type: Bug Components: Back End, Unparsing Affects Versions: 2.1.0 Reporter: Steve Lawrence Fix For: 2.2.0 A user reported an error when unparsing in the array combinator. The schema looks something like this: {code} ... <xs:sequence> <xs:element name="foo" ... /> <xs:element name="bar" minOccurs="1" maxOccurs="6" dfdl:occursCountKind="implicit"> <xs:complexType> <xs:sequence> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/"> <dfdl:discriminator>{ expression }</dfdl:discriminator> </xs:appinfo> </xs:annotation> <xs:sequence dfdl:hiddenGroupRef="hiddenGrouPRef" /> <xs:group ref="someGroupWithRequiredElement"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> ... {code} With XML that looks like this: {code} <foo>...</foo> {code} So the bar element is an array that requires at least one instance, but the infoset has zero instances. Trying to unparse this resultsin the following: {code} org.apache.daffodil.exceptions.Abort: Invariant broken: event.isStart.&&(event.node.isInstanceOf[org.apache.daffodil.infoset.DIArray]) org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129) org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129) org.apache.daffodil.processors.unparsers.ArrayCombinatorUnparser.unparse(ElementKindUnparsers.scala:254) org.apache.daffodil.processors.unparsers.Unparser$class.unparse1(Unparser.scala:72) ... {code} The expected result is to return an UnaparseError about expecting a start array event but not getting one. I think the assertion just needs to be changed to an UnparseError, since there is clearly a case where the assertion doesn't hold. -- This message was sent by Atlassian JIRA (v7.6.3#76005)