@@ -64,7 +64,8 @@ object DesugarEnums {
64
64
}
65
65
66
66
/** 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 ()
68
69
69
70
/** Add implied flags to an enum class or an enum case */
70
71
def addEnumFlags (cdef : TypeDef )(implicit ctx : Context ) =
@@ -89,7 +90,7 @@ object DesugarEnums {
89
90
DefDef (name.toTermName, Nil , Nil , TypeTree (), valuesDot(select))
90
91
val privateValuesDef =
91
92
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 ))
93
94
.withFlags(Private )
94
95
val valueOfDef = enumDefDef(" enumValue" , " fromInt" )
95
96
val withNameDef = enumDefDef(" enumValueNamed" , " fromName" )
@@ -195,7 +196,8 @@ object DesugarEnums {
195
196
/** Expand a module definition representing a parameterless enum case */
196
197
def expandEnumModule (name : TermName , impl : Template , mods : Modifiers , pos : Position )(implicit ctx : Context ): Tree = {
197
198
assert(impl.body.isEmpty)
198
- if (impl.parents.isEmpty)
199
+ if (! enumClass.exists) EmptyTree
200
+ else if (impl.parents.isEmpty)
199
201
expandSimpleEnumCase(name, mods, pos)
200
202
else {
201
203
def toStringMeth =
@@ -210,7 +212,8 @@ object DesugarEnums {
210
212
211
213
/** Expand a simple enum case */
212
214
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) {
214
217
val parent = interpolatedEnumParent(pos)
215
218
val impl = Template (emptyConstructor, parent :: Nil , EmptyValDef , Nil )
216
219
expandEnumModule(name, impl, mods, pos)
0 commit comments