Michael Beckerle created DAFFODIL-1971:
------------------------------------------

             Summary: Statement order of evaluation not per DFDL Spec
                 Key: DAFFODIL-1971
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-1971
             Project: Daffodil
          Issue Type: Bug
          Components: Middle "End"
    Affects Versions: 2.1.0
            Reporter: Michael Beckerle
             Fix For: 2.2.0


Per the DFDL spec section 9.5, the order of evaluation of statements for model 
groups is not correct.

This appears in the grammar
{code}
  final override lazy val termContentBody = prod("termContentBody") {
    dfdlStatementEvaluations ~ groupLeftFraming ~ _content ~ groupRightFraming
  }
{code}

This puts all the statement evaluations first. 

However, asserts or discriminators with test expressions (not patterns) are 
executed AFTER the content of the group. So this needs to be split up so that 
the statements that are supposed to execute before appear before, and the ones 
that execute after are after.

Note that per DFDL spec section 7.4.1, discriminators and asserts are mutually 
exclusive, and while there can be multiple asserts, there can be only one 
discriminator at a single annotation point.

Note also DFDL spec section 9.5.2, which specifies that discriminators are 
evaluated even if the parsing of the content fails. This will also require 
special treatment in the model group combinators to be sure discriminators 
execute. The same problem does not occur for elements because the element 
combinators explicitly execute discriminators regardless of failure of the 
element, and after they are parsed. 

test test_discrimExpression_04 behaves incorrectly because of this bug.







--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to