Skip to content

Enum singleton crashes REPL #6986

Closed
Closed
@kenbot

Description

@kenbot

Dotty version: 0.17.0-RC1
sbt version: 1.2.7

Code:

enum SingleCase { 
  case TheCase
}

REPL command:

scala> SingleCase.TheCase

Stack trace:

java.lang.NoSuchFieldError: TheCase
        at rs$line$2$.<init>(rs$line$2:1)
        at rs$line$2$.<clinit>(rs$line$2)
        at rs$line$2.res0(rs$line$2)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at dotty.tools.repl.Rendering.$anonfun$3(Rendering.scala:57)
        at scala.Option.map(Option.scala:163)
        at dotty.tools.repl.Rendering.valueOf(Rendering.scala:57)
        at dotty.tools.repl.Rendering.renderVal(Rendering.scala:80)
        at dotty.tools.repl.ReplDriver.displayMembers$3$$anonfun$3(ReplDriver.scala:274)
        at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:237)
        at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
        at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
        at scala.collection.TraversableLike.map(TraversableLike.scala:237)
        at scala.collection.TraversableLike.map$(TraversableLike.scala:230)
        at scala.collection.AbstractTraversable.map(Traversable.scala:108)
        at dotty.tools.repl.ReplDriver.displayMembers$7(ReplDriver.scala:274)
        at dotty.tools.repl.ReplDriver.displayDefinitions$$anonfun$3$$anonfun$2(ReplDriver.scala:300)
        at scala.Option.map(Option.scala:163)
        at dotty.tools.repl.ReplDriver.displayDefinitions$$anonfun$1(ReplDriver.scala:300)
        at dotty.tools.dotc.core.Phases.atPhase$$anonfun$1(Phases.scala:35)
        at dotty.tools.dotc.core.Periods.atPhase(Periods.scala:25)
        at dotty.tools.dotc.core.Phases.atPhase(Phases.scala:35)
        at dotty.tools.dotc.core.Contexts$Context.atPhase(Contexts.scala:71)
        at dotty.tools.repl.ReplDriver.displayDefinitions(ReplDriver.scala:306)
        at dotty.tools.repl.ReplDriver.compile$$anonfun$2(ReplDriver.scala:230)
        at scala.util.Either.fold(Either.scala:191)
        at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:230)
        at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:182)
        at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:127)
        at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:130)
        at dotty.tools.repl.ReplDriver.withRedirectedOutput$$anonfun$2$$anonfun$1(ReplDriver.scala:143)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
        at scala.Console$.withErr(Console.scala:196)
        at dotty.tools.repl.ReplDriver.withRedirectedOutput$$anonfun$1(ReplDriver.scala:143)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
        at scala.Console$.withOut(Console.scala:167)
        at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:143)
        at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:130)
        at xsbt.ConsoleInterface.run(ConsoleInterface.java:52)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
        at sbt.internal.inc.AnalyzingCompiler.console(AnalyzingCompiler.scala:199)
        at sbt.Console.console0$1(Console.scala:48)
        at sbt.Console.$anonfun$apply$2(Console.scala:51)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
        at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
        at sbt.TrapExit$App.run(TrapExit.scala:253)
        at java.base/java.lang.Thread.run(Thread.java:835)

It works if you have a parameter:
(it doesn't work for a Unit parameter in an even more unique & violent way; I'll raise another bug for that)

enum SingleCase { 
  case TheCase(i: Int)
}
scala> SingleCase.TheCase(3)
val res0: SingleCase = TheCase(3)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions