@@ -16,21 +16,20 @@ import scala.annotation.internal.sharable
16
16
object DesugarEnums {
17
17
import untpd ._
18
18
19
- @ sharable object CaseKind extends Enumeration {
20
- val Simple, Object, Class : Value = Value
21
- }
19
+ enum CaseKind :
20
+ case Simple , Object , Class
22
21
23
- final case class EnumConstraints (minKind : CaseKind . Value , maxKind : CaseKind . Value , enumCases : List [(Int , RefTree )]):
24
- require(minKind <= maxKind && ! (cached && enumCases.isEmpty))
22
+ final case class EnumConstraints (minKind : CaseKind , maxKind : CaseKind , enumCases : List [(Int , RefTree )]):
23
+ require(minKind.ordinal <= maxKind.ordinal && ! (cached && enumCases.isEmpty))
25
24
def requiresCreator = minKind == CaseKind .Simple
26
- def isEnumeration = maxKind < CaseKind .Class
27
- def cached = minKind < CaseKind .Class
25
+ def isEnumeration = maxKind.ordinal < CaseKind .Class .ordinal
26
+ def cached = minKind.ordinal < CaseKind .Class .ordinal
28
27
end EnumConstraints
29
28
30
29
/** Attachment containing the number of enum cases, the smallest kind that was seen so far,
31
30
* and a list of all the value cases with their ordinals.
32
31
*/
33
- val EnumCaseCount : Property .Key [(Int , CaseKind . Value , CaseKind . Value , List [(Int , TermName )])] = Property .Key ()
32
+ val EnumCaseCount : Property .Key [(Int , CaseKind , CaseKind , List [(Int , TermName )])] = Property .Key ()
34
33
35
34
/** Attachment signalling that when this definition is desugared, it should add any additional
36
35
* lookup methods for enums.
@@ -249,11 +248,11 @@ object DesugarEnums {
249
248
* - scaffolding containing the necessary definitions for singleton enum cases
250
249
* unless that scaffolding was already generated by a previous call to `nextEnumKind`.
251
250
*/
252
- def nextOrdinal (name : Name , kind : CaseKind . Value , definesLookups : Boolean )(using Context ): (Int , List [Tree ]) = {
251
+ def nextOrdinal (name : Name , kind : CaseKind , definesLookups : Boolean )(using Context ): (Int , List [Tree ]) = {
253
252
val (ordinal, seenMinKind, seenMaxKind, seenCases) =
254
253
ctx.tree.removeAttachment(EnumCaseCount ).getOrElse((0 , CaseKind .Class , CaseKind .Simple , Nil ))
255
- val minKind = if kind < seenMinKind then kind else seenMinKind
256
- val maxKind = if kind > seenMaxKind then kind else seenMaxKind
254
+ val minKind = if kind.ordinal < seenMinKind.ordinal then kind else seenMinKind
255
+ val maxKind = if kind.ordinal > seenMaxKind.ordinal then kind else seenMaxKind
257
256
val cases = name match
258
257
case name : TermName => (ordinal, name) :: seenCases
259
258
case _ => seenCases
0 commit comments