Open
Description
class MyLong(val value: Long) extends AnyVal
object MyLong {
def main(arguments: Array[String]): Unit = {
// Works on both Scala 2.11 and Scala 2.12
val ok1: ((=> Int) => Unit) { def apply(a: => Int): Unit } = { a => }
ok1(a = 1)
// Works on both Scala 2.11 and Scala 2.12
val ok2: (MyLong => Unit) { def apply(b: MyLong): Unit } = { b => }
ok2(b = new MyLong(0L))
// Works on Scala 2.11 but crashes on Scala 2.12
val regression: ((=> Int, Long) => Unit) { def apply(a: => Int, b: Long): Unit } = { (a, b) => }
regression(a = 1, b = 0L)
// Crashes on both Scala 2.11 and Scala 2.12
val error: ((=> Int, MyLong) => Unit) { def apply(a: => Int, b: MyLong): Unit } = { (a, b) => }
error(a = 1, b = new MyLong(0L))
}
}
$ scala -version
Scala code runner version 2.12.4 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
java.lang.NoSuchMethodException: Main$$$Lambda$138/977993101.apply(scala.Function0, long)
at java.lang.Class.getMethod(Class.java:1786)
at Main$.reflMethod$Method2(MyLong.scala:12)
at Main$.main(MyLong.scala:12)
at Main.main(MyLong.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.reflect.internal.util.ScalaClassLoader.$anonfun$run$2(ScalaClassLoader.scala:99)
at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:34)
at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:30)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:125)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:99)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:91)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:125)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.ScriptRunner.runCompiled(ScriptRunner.scala:173)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1(ScriptRunner.scala:190)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1$adapted(ScriptRunner.scala:190)
at scala.tools.nsc.ScriptRunner.$anonfun$withCompiledScript$2(ScriptRunner.scala:159)
at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:127)
at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:203)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:70)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:85)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)