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


---

Reply via email to