@@ -64,7 +64,8 @@ object DesugarEnums {
6464 }
6565
6666 /** A type tree referring to `enumClass` */
67- def enumClassRef (implicit ctx : Context ) = TypeTree (enumClass.typeRef)
67+ def enumClassRef (implicit ctx : Context ) =
68+ if (enumClass.exists) TypeTree (enumClass.typeRef) else TypeTree ()
6869
6970 /** Add implied flags to an enum class or an enum case */
7071 def addEnumFlags (cdef : TypeDef )(implicit ctx : Context ) =
@@ -89,7 +90,7 @@ object DesugarEnums {
8990 DefDef (name.toTermName, Nil , Nil , TypeTree (), valuesDot(select))
9091 val privateValuesDef =
9192 ValDef (nme.DOLLAR_VALUES , TypeTree (),
92- New (TypeTree (defn.EnumValuesType .appliedTo(enumClass.typeRef :: Nil )), ListOfNil ))
93+ New (TypeTree (defn.EnumValuesType .appliedTo(enumClass.typeRef :: Nil )), ListOfNil ))
9394 .withFlags(Private )
9495 val valueOfDef = enumDefDef(" enumValue" , " fromInt" )
9596 val withNameDef = enumDefDef(" enumValueNamed" , " fromName" )
@@ -195,7 +196,8 @@ object DesugarEnums {
195196 /** Expand a module definition representing a parameterless enum case */
196197 def expandEnumModule (name : TermName , impl : Template , mods : Modifiers , pos : Position )(implicit ctx : Context ): Tree = {
197198 assert(impl.body.isEmpty)
198- if (impl.parents.isEmpty)
199+ if (! enumClass.exists) EmptyTree
200+ else if (impl.parents.isEmpty)
199201 expandSimpleEnumCase(name, mods, pos)
200202 else {
201203 def toStringMeth =
@@ -210,7 +212,8 @@ object DesugarEnums {
210212
211213 /** Expand a simple enum case */
212214 def expandSimpleEnumCase (name : TermName , mods : Modifiers , pos : Position )(implicit ctx : Context ): Tree =
213- if (enumClass.typeParams.nonEmpty) {
215+ if (! enumClass.exists) EmptyTree
216+ else if (enumClass.typeParams.nonEmpty) {
214217 val parent = interpolatedEnumParent(pos)
215218 val impl = Template (emptyConstructor, parent :: Nil , EmptyValDef , Nil )
216219 expandEnumModule(name, impl, mods, pos)
0 commit comments