Vladimir Sitnikov created GROOVY-11105: ------------------------------------------
Summary: Support jdk-release option for configuring the target JDK release when doing the compilation Key: GROOVY-11105 URL: https://issues.apache.org/jira/browse/GROOVY-11105 Project: Groovy Issue Type: New Feature Components: Compiler Affects Versions: 4.0.12 Reporter: Vladimir Sitnikov See the motivation and description in Kotlin: [https://youtrack.jetbrains.com/issue/KT-29974/Add-a-compiler-option-Xjdk-release-similar-to-javacs-release-to-control-the-target-JDK-version] Sample code that requires {{jdk-release}} option for a proper compilation, and it could not be solved with "target bytecode version" alone. {code:java} import java.nio.ByteBuffer; ByteBuffer bb = new ByteBuffer(); // it should compile to invokevirtual Buffer.flip()Ljava.nio.Buffer; // when compiling for Java 1.8 since Java 1.8 does not have ByteBuffer flip() override in ByteBuffer // However, if the build uses JDK17 for execution, then it contains ByteBuffer flip() override, // and Groovy would compile it to invokevirtual ByteBuffer.flip()Ljava.nio.ByteBuffer // which would fail to execute in Java 1.8 bb.flip(); {code} See https://www.morling.dev/blog/bytebuffer-and-the-dreaded-nosuchmethoderror/ See https://stackoverflow.com/a/61267496/1261287 -- This message was sent by Atlassian Jira (v8.20.10#820010)