diff --git a/sbt-app/src/sbt-test/java/method-handle-release/build.sbt b/sbt-app/src/sbt-test/java/method-handle-release/build.sbt new file mode 100644 index 000000000..0cb11c5e3 --- /dev/null +++ b/sbt-app/src/sbt-test/java/method-handle-release/build.sbt @@ -0,0 +1,2 @@ +ThisBuild / scalaVersion := "2.13.16" +scalacOptions += "-release:11" diff --git a/sbt-app/src/sbt-test/java/method-handle-release/src/main/scala/Main.scala b/sbt-app/src/sbt-test/java/method-handle-release/src/main/scala/Main.scala new file mode 100644 index 000000000..8c36d7268 --- /dev/null +++ b/sbt-app/src/sbt-test/java/method-handle-release/src/main/scala/Main.scala @@ -0,0 +1,19 @@ +import java.lang.invoke.{ MethodHandle, MethodHandles } + +object Main { + case class TestClass(number: Int) + def testMethod(): TestClass = { + TestClass(10) + } + + def wrappedMethod(handle: MethodHandle): TestClass = { + handle.invokeExact() + } + + def main(args: Array[String]): Unit = { + val method = classOf[Main.type].getDeclaredMethod("testMethod") + method.setAccessible(true) + val handle = MethodHandles.lookup.unreflect(method) + println(wrappedMethod(handle)) + } +} diff --git a/sbt-app/src/sbt-test/java/method-handle-release/test b/sbt-app/src/sbt-test/java/method-handle-release/test new file mode 100644 index 000000000..c0b8da542 --- /dev/null +++ b/sbt-app/src/sbt-test/java/method-handle-release/test @@ -0,0 +1,3 @@ +# https://github.com/sbt/sbt/issues/6175 +# MethodHandle.invokeExact fails to compile on JDK 15+ when targeting Java 11 +> compile