Github user stevedlawrence commented on a diff in the pull request:
https://github.com/apache/incubator-daffodil/pull/5#discussion_r150862794
--- Diff:
daffodil-core/src/main/scala/edu/illinois/ncsa/daffodil/dsom/SchemaComponent.scala
---
@@ -149,23 +157,45 @@ abstract class SchemaComponent(xmlArg: Node, val
parent: SchemaComponent)
val ee = et match {
case None => None
case Some(eb: ElementBase) => Some(eb)
- case Some(sc: SchemaComponent) => sc.enclosingElement
+ case Some(sc: SchemaComponent) => {
+ val scee = sc.enclosingElement
+ scee
+ }
}
ee
}.value
- final lazy val rootElement: Option[GlobalElementDecl] = {
+ final lazy val rootElementRef = rootElementDecl.map { _.elementRef }
+
+ final lazy val rootElementDecl: Option[GlobalElementDecl] = {
enclosingElement match {
- case Some(e) => e.rootElement
- case None => {
- if (this.isInstanceOf[GlobalElementDecl])
- Some(this.asInstanceOf[GlobalElementDecl])
- else
- None
+ case Some(e) => e.rootElementDecl
+ case None => this match {
+ case ged: GlobalElementDecl => Some(ged)
+ case root: Root => root.optReferredToComponent
+ case _ => Assert.invariantFailed("No global element decl")
}
}
}
+ // final lazy val enclosingTerm: Option[Term] = {
+ // val optec = enclosingComponent
+ // val res = optec match {
+ // case None => None
+ // // case Some(ge: GlobalElementDecl) => ge.optElementRef.flatMap
{ _.enclosingTerm }
+ // case Some(ggd: GlobalGroupDef) => {
+ // val ggdet = ggd.groupRef.asModelGroup
+ // Some(ggdet)
+ // }
+ // case Some(t: Term) => Some(t)
+ // case Some(ged: GlobalElementDecl) => Some(ged.elementRef)
+ // case Some(ec) => {
+ // val ecet = ec.enclosingTerm
+ // ecet
+ // }
+ // }
+ // res
+ // }
--- End diff --
Remove comment
---