Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ object ClassfileConstants {
case JAVA_ACC_FINAL => Final
case JAVA_ACC_SYNTHETIC => Synthetic
case JAVA_ACC_STATIC => JavaStatic
case JAVA_ACC_ENUM => Enum
case JAVA_ACC_ABSTRACT => if (isClass) Abstract else Deferred
case JAVA_ACC_INTERFACE => PureInterfaceCreationFlags | JavaDefined
case _ => EmptyFlags
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,12 +200,10 @@ class ClassfileParser(
sym.markAbsent()
}

// eager load java enum definitions for exhaustivity check of pattern match
// eager load enum definitions for exhaustivity check of pattern match
if (isEnum) {
instanceScope.toList.map(_.ensureCompleted())
staticScope.toList.map(_.ensureCompleted())
classRoot.setFlag(Flags.JavaEnumTrait)
moduleRoot.setFlag(Flags.JavaEnumTrait)
}

result
Expand Down
4 changes: 4 additions & 0 deletions tests/run/i6664/Bomb_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enum Bomb
{
case Kaboom
}
5 changes: 5 additions & 0 deletions tests/run/i6664/Detonator_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
object Test
{
def boom: Unit = Bomb.valueOf("Kaboom")
def main(args: Array[String]): Unit = println("ok!")
}
3 changes: 3 additions & 0 deletions tests/run/i6677/Enum_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
enum Foo[A] {
case Bar extends Foo[Int]
}
5 changes: 5 additions & 0 deletions tests/run/i6677/Test_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
object Test {
def main(args: Array[String]): Unit = {
println(Foo.Bar)
}
}
5 changes: 5 additions & 0 deletions tests/run/i7287/Enum_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enum Color derives Eql {
case Unknown
case Blue(v: Int)
case Red(v: Int)
}
6 changes: 6 additions & 0 deletions tests/run/i7287/Test_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
object Test {
def main(args: Array[String]): Unit = {
val testData = Seq(("blah", Color.Unknown), ("red", Color.Red(10)))
println(testData)
}
}
3 changes: 3 additions & 0 deletions tests/run/i7410/Enum_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
enum E {
case A, B, C
}
6 changes: 6 additions & 0 deletions tests/run/i7410/Test_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
object Test {
def main(args: Array[String]): Unit = {
val a = E.A
println(a)
}
}
3 changes: 3 additions & 0 deletions tests/run/i7424/Enum_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
enum A {
case A1
}
5 changes: 5 additions & 0 deletions tests/run/i7424/Test_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
object Test {
def main(args: Array[String]): Unit = {
println(A.values)
}
}
5 changes: 5 additions & 0 deletions tests/run/i7991.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enum Num { case One }

object Test extends App {
Num.One
}
1 change: 1 addition & 0 deletions tests/run/i7991/Num_1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
enum Num { case One }
3 changes: 3 additions & 0 deletions tests/run/i7991/Test_2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
object Test extends App {
Num.One
}