Github user VTGuy commented on a diff in the pull request:
https://github.com/apache/incubator-daffodil/pull/5#discussion_r151153142
--- Diff:
daffodil-core/src/main/scala/edu/illinois/ncsa/daffodil/dsom/DFDLStatementMixin.scala
---
@@ -38,16 +38,83 @@ import edu.illinois.ncsa.daffodil.exceptions.ThrowsSDE
import edu.illinois.ncsa.daffodil.schema.annotation.props.gen.TestKind
import edu.illinois.ncsa.daffodil.grammar.primitives.AssertBase
+trait ResolvesDFDLStatementMixin
+ extends ThrowsSDE
+ with ProvidesDFDLStatementMixin { self: Term =>
+
+ requiredEvaluations(statements)
+
+ final lazy val statements: Seq[DFDLStatement] =
+ optReferencedStatementSource.toSeq.flatMap { _.resolvedStatements } ++
+ localStatements
+
+ private def getParserExprReferencedElements(s: DFDLStatement,
+ f: ContentValueReferencedElementInfoMixin =>
Set[DPathElementCompileInfo]) = {
+ s match {
+
+ case a: DFDLAssertionBase if (a.testKind eq TestKind.Expression) => {
+ a.gram match {
+ case ab: AssertBase => f(ab.expr)
+ case _ => ReferencedElementInfos.None
+ }
+ }
+
+ case _ => getUnparserExprReferencedElements(s, f)
+ }
+ }
+
+ private def getUnparserExprReferencedElements(s: DFDLStatement,
+ f: ContentValueReferencedElementInfoMixin =>
Set[DPathElementCompileInfo]) = {
+ s match {
+ case sv: DFDLSetVariable => {
+ val mdv = sv.defv.maybeDefaultValueExpr
+ if (mdv.isDefined)
+ f(mdv.get)
+ else
+ ReferencedElementInfos.None
+ }
+ case nv: DFDLNewVariableInstance => {
+ // nv.defaultValueExpr.contentReferencedElementInfos
+ s.notYetImplemented("dfdl:newVariableInstance")
+ }
+ case _ => ReferencedElementInfos.None
+ }
+ }
+
+ final protected def creis(rei: ContentValueReferencedElementInfoMixin) =
rei.contentReferencedElementInfos
+ final protected def vreis(rei: ContentValueReferencedElementInfoMixin) =
rei.valueReferencedElementInfos
+
+ private def statementReferencedElementInfos(f: DFDLStatement =>
Set[DPathElementCompileInfo]) = {
+
--- End diff --
Same here regarding extra space.
---