Skip to content

Commit 240f618

Browse files
committed
fix #9809: when compiling scala.js - enum value forwarders are defs
1 parent e181bfc commit 240f618

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,21 @@ class CompleteJavaEnums extends MiniPhase with InfoTransformer { thisPhase =>
9898
/** Return a list of forwarders for enum values defined in the companion object
9999
* for java interop.
100100
*/
101-
private def addedEnumForwarders(clazz: Symbol)(using Context): List[ValDef] = {
101+
private def addedEnumForwarders(clazz: Symbol)(using Context): List[MemberDef] = {
102102
val moduleCls = clazz.companionClass
103103
val moduleRef = ref(clazz.companionModule)
104104

105105
val enums = moduleCls.info.decls.filter(member => member.isAllOf(EnumValue))
106106
for { enumValue <- enums }
107107
yield {
108-
val fieldSym = newSymbol(clazz, enumValue.name.asTermName, EnumValue | JavaStatic, enumValue.info)
109-
fieldSym.addAnnotation(Annotations.Annotation(defn.ScalaStaticAnnot))
110-
ValDef(fieldSym, moduleRef.select(enumValue))
108+
if ctx.settings.scalajs.value then
109+
val methodSym = newSymbol(clazz, enumValue.name.asTermName, EnumValue | Method | JavaStatic, MethodType(Nil, enumValue.info))
110+
methodSym.addAnnotation(Annotations.Annotation(defn.ScalaStaticAnnot))
111+
DefDef(methodSym, moduleRef.select(enumValue))
112+
else
113+
val fieldSym = newSymbol(clazz, enumValue.name.asTermName, EnumValue | JavaStatic, enumValue.info)
114+
fieldSym.addAnnotation(Annotations.Annotation(defn.ScalaStaticAnnot))
115+
ValDef(fieldSym, moduleRef.select(enumValue))
111116
}
112117
}
113118

0 commit comments

Comments
 (0)