Skip to content

Commit 23d414b

Browse files
committed
Make enum values static at Erasure
If an enum value is static (i.e. part of a globally reachable object), set the JavaStatic flag at erasure.
1 parent 8c3fc97 commit 23d414b

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

compiler/src/dotty/tools/dotc/transform/Erasure.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ class Erasure extends Phase with DenotTransformer {
7575
val newInfo = transformInfo(oldSymbol, oldInfo)
7676
val oldFlags = ref.flags
7777
val newFlags =
78-
if (oldSymbol.is(Flags.TermParam) && isCompacted(oldSymbol.owner)) oldFlags &~ Flags.Param
79-
else oldFlags &~ Flags.HasDefaultParamsFlags // HasDefaultParamsFlags needs to be dropped because overriding might become overloading
78+
if oldSymbol.is(Flags.TermParam) && isCompacted(oldSymbol.owner) then
79+
oldFlags &~ Flags.Param
80+
else if oldSymbol.isAllOf(Flags.EnumValue) && oldSymbol.isStatic then
81+
oldFlags | Flags.JavaStatic
82+
else
83+
oldFlags &~ Flags.HasDefaultParamsFlags // HasDefaultParamsFlags needs to be dropped because overriding might become overloading
8084

8185
// TODO: define derivedSymDenotation?
8286
if ((oldSymbol eq newSymbol) && (oldOwner eq newOwner) && (oldName eq newName) && (oldInfo eq newInfo) && (oldFlags == newFlags))

tests/pos/i7428.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
object ABug
1+
class ABug
22
enum Tag
33
case first
44
import Tag.first

0 commit comments

Comments
 (0)