@@ -586,11 +586,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
586586 }
587587
588588 /** Decompose a type into subspaces -- assume the type can be decomposed */
589- def decompose (tp : Type ): List [Space ] = {
590- val children = tp.classSymbol.children
591-
592- debug.println(s " candidates for ${tp.show} : [ ${children.map(_.show).mkString(" , " )}] " )
593-
589+ def decompose (tp : Type ): List [Space ] =
594590 tp.dealias match {
595591 case AndType (tp1, tp2) =>
596592 intersect(Typ (tp1, false ), Typ (tp2, false )) match {
@@ -607,8 +603,13 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
607603 case tp if tp.isRef(defn.UnitClass ) =>
608604 Typ (ConstantType (Constant (())), true ) :: Nil
609605 case tp if tp.classSymbol.isAllOf(JavaEnumTrait ) =>
606+ tp.classSymbol.linkedClass.info.decls.toList.map(_.ensureCompleted())
607+ val children = tp.classSymbol.children
610608 children.map(sym => Typ (sym.termRef, true ))
611609 case tp =>
610+ val children = tp.classSymbol.children
611+ debug.println(s " candidates for ${tp.show} : [ ${children.map(_.show).mkString(" , " )}] " )
612+
612613 val parts = children.map { sym =>
613614 val sym1 = if (sym.is(ModuleClass )) sym.sourceModule else sym
614615 val refined = TypeOps .refineUsingParent(tp, sym1)
@@ -630,7 +631,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
630631
631632 parts.map(Typ (_, true ))
632633 }
633- }
634+
634635
635636 /** Abstract sealed types, or-types, Boolean and Java enums can be decomposed */
636637 def canDecompose (tp : Type ): Boolean = {
0 commit comments