Closed
Description
Compiler version
3.0.0
Minimized code
scala> String
Output
scala> String
Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/String$
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at dotty.tools.repl.Rendering.valueOf(Rendering.scala:102)
at dotty.tools.repl.Rendering.renderVal(Rendering.scala:141)
at dotty.tools.repl.ReplDriver.$anonfun$13(ReplDriver.scala:323)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at dotty.tools.repl.ReplDriver.extractAndFormatMembers$1(ReplDriver.scala:323)
at dotty.tools.repl.ReplDriver.renderDefinitions$$anonfun$2(ReplDriver.scala:346)
at scala.Option.map(Option.scala:242)
at dotty.tools.repl.ReplDriver.renderDefinitions(ReplDriver.scala:349)
at dotty.tools.repl.ReplDriver.compile$$anonfun$2(ReplDriver.scala:268)
at scala.util.Either.fold(Either.scala:189)
at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:285)
at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:212)
at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:145)
at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:148)
at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:167)
at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:148)
at dotty.tools.repl.ReplDriver.tryRunning(ReplDriver.scala:114)
at dotty.tools.repl.Main$.main(Main.scala:6)
at dotty.tools.repl.Main.main(Main.scala)
Caused by: java.lang.ClassNotFoundException: java.lang.String$
at dotty.tools.repl.AbstractFileClassLoader.findClass$$anonfun$1(AbstractFileClassLoader.scala:44)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:333)
at dotty.tools.repl.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:46)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at dotty.tools.repl.AbstractFileClassLoader.loadClass(AbstractFileClassLoader.scala:55)
... 23 more
Expectation
An error message rather than a crash:
scala> String
1 |String
|^^^^^^
|Java defined class String is not a value
Notes
Behaves as expected on 3.0.0-RC1, crashes on 3.0.0-RC2 and later apparently due to #11431
Behaves as expected if the class has been previously referenced:
scala> "foo"
val res0: String = foo
scala> String
1 |String
|^^^^^^
|Java defined class String is not a value
Also:
scala> import scala.compiletime.testing.typeChecks
scala> typeChecks("String")
val res0: Boolean = true
scala> "foo"
val res1: String = foo
scala> typeChecks("String")
val res2: Boolean = false