From 67b241de34d1840c7a9e75857fd2389844b0afc9 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Thu, 13 Aug 2020 12:57:25 +0100 Subject: [PATCH 1/9] Fixes #9 by telling the compiler no features are preview features --- .../bsideup/jabel/JabelJavacProcessor.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index 904801c..3f5801a 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -1,5 +1,6 @@ package com.github.bsideup.jabel; +import com.sun.tools.javac.code.Preview; import com.sun.tools.javac.code.Source; import com.sun.tools.javac.parser.JavaTokenizer; import com.sun.tools.javac.parser.JavacParser; @@ -65,6 +66,13 @@ public class JabelJavacProcessor implements Processor { ByteBuddy byteBuddy = new ByteBuddy(); + log.info("Disabling source level check"); + /** + * Inject our code into the JDK version checks + * + * @see JavacParser#checkSourceLevel + * @see JavaTokenizer#checkSourceLevel + */ for (Class clazz : Arrays.asList(JavacParser.class, JavaTokenizer.class)) { byteBuddy .redefine(clazz) @@ -76,6 +84,20 @@ public class JabelJavacProcessor implements Processor { .load(clazz.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); } + log.info("Disabling preview feature flag checks"); + // force javac to think no features are previews + Class previewClass = Preview.class; + byteBuddy.redefine(previewClass) + .visit(Advice.to(PreviewFeatureCheckOverride.class).on(named("isPreview"))) + .make() + .load(previewClass.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); + + log.info("Disabling feature min level checks"); + /** + * For all the features in {@link #ENABLED_FEATURES}, override the min JDK level, reducing it to 8 + * + * @see ENABLED_FEATURES + */ try { Field field = Source.Feature.class.getDeclaredField("minLevel"); field.setAccessible(true); @@ -91,6 +113,20 @@ public class JabelJavacProcessor implements Processor { } } + static public class PreviewFeatureCheckOverride { + + /** + * On {@link Preview#isPreview} exit, override the return value to always be false. + */ + @Advice.OnMethodExit + static public boolean isPreview(Source.Feature feature) { + log.debug("Feature being set to NOT preview: " + feature); + return false; + } + } + + + @Override public SourceVersion getSupportedSourceVersion() { return SourceVersion.RELEASE_8; From ecff9a34db16c9f0b4e2602f80a851f591a4b551 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Thu, 13 Aug 2020 13:32:51 +0100 Subject: [PATCH 2/9] Fixes class not found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I don’t understand why, but must be something to do with the way ByteBuddy works, the Advice class seems to be required to be a normal class, not an inner static class. --- .../bsideup/jabel/JabelJavacProcessor.java | 14 ----------- .../jabel/PreviewFeatureCheckOverride.java | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index 3f5801a..5551b13 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -113,20 +113,6 @@ public class JabelJavacProcessor implements Processor { } } - static public class PreviewFeatureCheckOverride { - - /** - * On {@link Preview#isPreview} exit, override the return value to always be false. - */ - @Advice.OnMethodExit - static public boolean isPreview(Source.Feature feature) { - log.debug("Feature being set to NOT preview: " + feature); - return false; - } - } - - - @Override public SourceVersion getSupportedSourceVersion() { return SourceVersion.RELEASE_8; diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java new file mode 100644 index 0000000..7a27b7e --- /dev/null +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java @@ -0,0 +1,24 @@ +package com.github.bsideup.jabel; + +import com.sun.tools.javac.code.Preview; +import com.sun.tools.javac.code.Source; +import net.bytebuddy.asm.Advice; + +public class PreviewFeatureCheckOverride { + + static final boolean debug = false; + + /** + * On {@link Preview#isPreview} exit, override the return value to always be false. + */ + @Advice.OnMethodExit + static public boolean isPreview(Source.Feature feature) { + if (debug) { + /** + * Can't use {@link org.apache.maven.plugin.logging.Log} from instrumented javac classes. + */ + System.out.println("Feature being set to NOT preview: " + feature); + } + return false; + } +} \ No newline at end of file From 5126df83fb266527dbfa95a94b0d3ef97c26de4a Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Mon, 17 Aug 2020 19:58:35 +0100 Subject: [PATCH 3/9] Remove logging and rename --- .../bsideup/jabel/JabelJavacProcessor.java | 19 ++++++++++++++----- ...eCheckOverride.java => PreviewAdvice.java} | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) rename jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/{PreviewFeatureCheckOverride.java => PreviewAdvice.java} (93%) diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index 5551b13..4da9c9c 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -62,11 +62,15 @@ public class JabelJavacProcessor implements Processor { .collect(Collectors.toSet()); static { + // log that we've started, otherwise if there's certain types of errors, no output is seen at all from Jabel (e.g. errors compiling our code) + // helps for verifying Jabel is being picked up correctly from project settings + logInfo("Jabel static initialising ByteBuddy"); + ByteBuddyAgent.install(); ByteBuddy byteBuddy = new ByteBuddy(); - log.info("Disabling source level check"); + logInfo("Disabling source level check"); /** * Inject our code into the JDK version checks * @@ -84,15 +88,15 @@ public class JabelJavacProcessor implements Processor { .load(clazz.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); } - log.info("Disabling preview feature flag checks"); + logInfo("Disabling preview feature flag checks"); // force javac to think no features are previews Class previewClass = Preview.class; byteBuddy.redefine(previewClass) - .visit(Advice.to(PreviewFeatureCheckOverride.class).on(named("isPreview"))) + .visit(Advice.to(PreviewAdvice.class).on(named("isPreview"))) .make() .load(previewClass.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); - log.info("Disabling feature min level checks"); + logInfo("Disabling feature min level checks"); /** * For all the features in {@link #ENABLED_FEATURES}, override the min JDK level, reducing it to 8 * @@ -111,6 +115,11 @@ public class JabelJavacProcessor implements Processor { } catch (Exception e) { throw new RuntimeException(e); } + logInfo("Jabel ByteBuddy initialisation complete"); + } + + static private void logInfo(String msg) { + System.out.println(msg); } @Override @@ -120,7 +129,7 @@ public SourceVersion getSupportedSourceVersion() { @Override public void init(ProcessingEnvironment processingEnv) { - System.out.println( + logInfo( ENABLED_FEATURES.stream() .map(Enum::name) .collect(Collectors.joining( diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java similarity index 93% rename from jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java rename to jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java index 7a27b7e..881ead5 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewFeatureCheckOverride.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java @@ -4,7 +4,7 @@ import com.sun.tools.javac.code.Source; import net.bytebuddy.asm.Advice; -public class PreviewFeatureCheckOverride { +public class PreviewAdvice { static final boolean debug = false; From 5bec5e6b3b50821cd7854c8eedff97a848cfe762 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Mon, 17 Aug 2020 20:02:02 +0100 Subject: [PATCH 4/9] Trailing new line --- .../src/main/java/com/github/bsideup/jabel/PreviewAdvice.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java index 881ead5..b071241 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java @@ -21,4 +21,4 @@ static public boolean isPreview(Source.Feature feature) { } return false; } -} \ No newline at end of file +} From 74f36b8551e8b27f05e0be20fe7e6629cae98a75 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Mon, 17 Aug 2020 22:39:41 +0100 Subject: [PATCH 5/9] Optional refactor to static methods --- .../bsideup/jabel/JabelJavacProcessor.java | 78 +++++++++++-------- 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index 4da9c9c..fa00adf 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -7,6 +7,8 @@ import net.bytebuddy.ByteBuddy; import net.bytebuddy.agent.ByteBuddyAgent; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.AsmVisitorWrapper; +import net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods; import net.bytebuddy.dynamic.loading.ClassReloadingStrategy; import javax.annotation.processing.Completion; @@ -67,41 +69,24 @@ public class JabelJavacProcessor implements Processor { logInfo("Jabel static initialising ByteBuddy"); ByteBuddyAgent.install(); - ByteBuddy byteBuddy = new ByteBuddy(); - logInfo("Disabling source level check"); - /** - * Inject our code into the JDK version checks - * - * @see JavacParser#checkSourceLevel - * @see JavaTokenizer#checkSourceLevel - */ - for (Class clazz : Arrays.asList(JavacParser.class, JavaTokenizer.class)) { - byteBuddy - .redefine(clazz) - .visit( - Advice.to(CheckSourceLevelAdvice.class) - .on(named("checkSourceLevel").and(takesArguments(2))) - ) - .make() - .load(clazz.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); - } + sourceLevelCheck(byteBuddy); - logInfo("Disabling preview feature flag checks"); - // force javac to think no features are previews - Class previewClass = Preview.class; - byteBuddy.redefine(previewClass) - .visit(Advice.to(PreviewAdvice.class).on(named("isPreview"))) - .make() - .load(previewClass.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); + previewFeatureChecks(byteBuddy); + + featureMinLevelChecks(); + + logInfo("Jabel ByteBuddy initialisation complete"); + } + /** + * For all the features in {@link #ENABLED_FEATURES}, override the min JDK level, reducing it to 8 + * + * @see #ENABLED_FEATURES + */ + private static void featureMinLevelChecks() { logInfo("Disabling feature min level checks"); - /** - * For all the features in {@link #ENABLED_FEATURES}, override the min JDK level, reducing it to 8 - * - * @see ENABLED_FEATURES - */ try { Field field = Source.Feature.class.getDeclaredField("minLevel"); field.setAccessible(true); @@ -115,7 +100,38 @@ public class JabelJavacProcessor implements Processor { } catch (Exception e) { throw new RuntimeException(e); } - logInfo("Jabel ByteBuddy initialisation complete"); + } + + /** + * Inject our code into the JDK version checks + * + * @see JavacParser#checkSourceLevel + * @see JavaTokenizer#checkSourceLevel + */ + private static void sourceLevelCheck(ByteBuddy byteBuddy) { + logInfo("Disabling source level check"); + for (Class clazz : Arrays.asList(JavacParser.class, JavaTokenizer.class)) { + ForDeclaredMethods checkSourceLevelMethod = Advice.to(CheckSourceLevelAdvice.class) + .on(named("checkSourceLevel").and(takesArguments(2))); + byteBuddy + .redefine(clazz) + .visit(checkSourceLevelMethod) + .make() + .load(clazz.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); + } + } + + /** + * Force javac to think that no features are preview features + */ + private static void previewFeatureChecks(ByteBuddy byteBuddy) { + logInfo("Disabling preview feature flag checks"); + Class previewClass = Preview.class; + ForDeclaredMethods isPreviewMethod = Advice.to(PreviewAdvice.class).on(named("isPreview")); + byteBuddy.redefine(previewClass) + .visit(isPreviewMethod) + .make() + .load(previewClass.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); } static private void logInfo(String msg) { From c313c0d22c952604b784d866b31d06639d964047 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Mon, 17 Aug 2020 22:46:46 +0100 Subject: [PATCH 6/9] Docs clarify --- .../github/bsideup/jabel/CheckSourceLevelAdvice.java | 6 ++++++ .../{PreviewAdvice.java => IsPreviewAdvice.java} | 5 +++-- .../com/github/bsideup/jabel/JabelJavacProcessor.java | 11 +++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) rename jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/{PreviewAdvice.java => IsPreviewAdvice.java} (75%) diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/CheckSourceLevelAdvice.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/CheckSourceLevelAdvice.java index f28f34b..e2dfea9 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/CheckSourceLevelAdvice.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/CheckSourceLevelAdvice.java @@ -6,6 +6,12 @@ public class CheckSourceLevelAdvice { + /** + * If the {@link com.sun.tools.javac.code.Source.Feature} is allowed in JDK8, make javac think it has the same + * characteristics as {@link Source.Feature.LAMBDA} + * + * @param feature + */ @Advice.OnMethodEnter public static void checkSourceLevel( @Advice.Argument(value = 1, readOnly = false) Feature feature diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/IsPreviewAdvice.java similarity index 75% rename from jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java rename to jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/IsPreviewAdvice.java index b071241..9c4d5f3 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/PreviewAdvice.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/IsPreviewAdvice.java @@ -4,12 +4,13 @@ import com.sun.tools.javac.code.Source; import net.bytebuddy.asm.Advice; -public class PreviewAdvice { +public class IsPreviewAdvice { static final boolean debug = false; /** - * On {@link Preview#isPreview} exit, override the return value to always be false. + * Force javac to think that no features are preview features - on {@link Preview#isPreview} exit, override the + * return value to always be false. */ @Advice.OnMethodExit static public boolean isPreview(Source.Feature feature) { diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index fa00adf..d6f6afd 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -7,7 +7,6 @@ import net.bytebuddy.ByteBuddy; import net.bytebuddy.agent.ByteBuddyAgent; import net.bytebuddy.asm.Advice; -import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods; import net.bytebuddy.dynamic.loading.ClassReloadingStrategy; @@ -103,10 +102,11 @@ private static void featureMinLevelChecks() { } /** - * Inject our code into the JDK version checks + * Intercept calls to {@link JavacParser#checkSourceLevel} * * @see JavacParser#checkSourceLevel * @see JavaTokenizer#checkSourceLevel + * @see CheckSourceLevelAdvice */ private static void sourceLevelCheck(ByteBuddy byteBuddy) { logInfo("Disabling source level check"); @@ -122,12 +122,15 @@ private static void sourceLevelCheck(ByteBuddy byteBuddy) { } /** - * Force javac to think that no features are preview features + * Intercept call return from {@link Preview#isPreview} + * + * @see Preview#isPreview + * @see IsPreviewAdvice */ private static void previewFeatureChecks(ByteBuddy byteBuddy) { logInfo("Disabling preview feature flag checks"); Class previewClass = Preview.class; - ForDeclaredMethods isPreviewMethod = Advice.to(PreviewAdvice.class).on(named("isPreview")); + ForDeclaredMethods isPreviewMethod = Advice.to(IsPreviewAdvice.class).on(named("isPreview")); byteBuddy.redefine(previewClass) .visit(isPreviewMethod) .make() From 793b88cef1f955729d35f0b3a3516321377296bb Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Tue, 18 Aug 2020 10:48:48 +0100 Subject: [PATCH 7/9] =?UTF-8?q?Tests=20-=20can=E2=80=99t=20get=20the=20tes?= =?UTF-8?q?ts=20to=20fail,=20even=20when=20the=20annotation=20processor=20?= =?UTF-8?q?is=20(very)=20disabled.=20Passes=20locally,=20but=20fails=20on?= =?UTF-8?q?=20github=20CI.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Local: ↪ ./gradlew -version ------------------------------------------------------------ Gradle 6.2.1 ------------------------------------------------------------ Build time: 2020-02-24 20:24:10 UTC Revision: aacbcb7e587faa6a8e7851751a76183b6187b164 Kotlin: 1.3.61 Groovy: 2.5.8 Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019 JVM: 13.0.2 (Oracle Corporation 13.0.2+8) OS: Mac OS X 10.15.6 x86_64 --- example/build.gradle | 7 ++- .../main/java/com/example/JabelExample.java | 16 +++++++ .../java/com/example/JabelExampleTest.java | 44 ++++++++++++++++++- .../bsideup/jabel/JabelJavacProcessor.java | 6 +-- 4 files changed, 67 insertions(+), 6 deletions(-) diff --git a/example/build.gradle b/example/build.gradle index 852b738..95ca2ba 100644 --- a/example/build.gradle +++ b/example/build.gradle @@ -19,6 +19,11 @@ compileTestJava { test { doFirst { + def javaVersion = System.getProperty("java.version").tokenize(".").get(0).toInteger() + if (javaVersion != 13) { + throw new IllegalStateException("Must run build on Java 13 (system reported: ${javaVersion})") + } + def java8home = System.getenv("JAVA_HOME_8") if (!java8home) { throw new IllegalStateException("JAVA_HOME_8 must be set") @@ -28,7 +33,7 @@ test { } dependencies { - annotationProcessor project(":jabel-javac-plugin") +// annotationProcessor project(":jabel-javac-plugin") testCompile 'junit:junit:4.12' } \ No newline at end of file diff --git a/example/src/main/java/com/example/JabelExample.java b/example/src/main/java/com/example/JabelExample.java index 1b7862a..7ef78c4 100644 --- a/example/src/main/java/com/example/JabelExample.java +++ b/example/src/main/java/com/example/JabelExample.java @@ -63,4 +63,20 @@ public String innerPublic() { return outerPrivate(); } } + + + public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { + var me = 4; + var operation = "squareMe"; + var result = switch (operation) { + case "doubleMe" -> { + yield me * 2; + } + case "squareMe" -> { + yield me * me; + } + default -> me; + }; + + } } diff --git a/example/src/test/java/com/example/JabelExampleTest.java b/example/src/test/java/com/example/JabelExampleTest.java index d6869f5..a7d0230 100644 --- a/example/src/test/java/com/example/JabelExampleTest.java +++ b/example/src/test/java/com/example/JabelExampleTest.java @@ -7,17 +7,57 @@ public class JabelExampleTest { @Test(expected = ClassNotFoundException.class) - public void isJava8() throws Exception { + public void isProbablyJava8() throws Exception { Class.forName("java.lang.StackWalker"); } @Test - public void shouldWork() { + public void testRuntimeIsJava8() { + String jver = System.getProperty("java.version"); + String needle = "1.8"; + assertTrue("Java version expected: " + needle + " actual: " + jver, jver.startsWith(needle)); + } + + @Test + public void testPostJava8Features() { JabelExample jabelExample = new JabelExample(); String result = jabelExample.run(new String[0]); assertTrue("'" + result + "' should start with 'idk '", result.startsWith("idk ")); + } + + @Test + public void testJava13PreviewFeatureTextBlocksJep355(){ + String TEXT_BLOCK_JSON = """ +{ + "name" : "Baeldung", + "website" : "https://www.%s.com/" +} +"""; + } + + @Test + public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { + var me = 4; + var operation = "squareMe"; + var result = switch (operation) { + case "doubleMe" -> { + yield me * 2; + } + case "squareMe" -> { + yield me * me; + } + default -> me; + }; + + assertEquals(16, result); + } + @Test + public void tgesd(){ + JabelExampleTest jabelExampleTest = new JabelExampleTest(); + jabelExampleTest.whenSwitchingOnOperationSquareMe_thenWillReturnSquare(); } + } \ No newline at end of file diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index d6f6afd..b01cd34 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -70,11 +70,11 @@ public class JabelJavacProcessor implements Processor { ByteBuddyAgent.install(); ByteBuddy byteBuddy = new ByteBuddy(); - sourceLevelCheck(byteBuddy); +// sourceLevelCheck(byteBuddy); - previewFeatureChecks(byteBuddy); +// previewFeatureChecks(byteBuddy); - featureMinLevelChecks(); +// featureMinLevelChecks(); logInfo("Jabel ByteBuddy initialisation complete"); } From 57a42dcf7edc6f939e4b609c34eb753036e61a79 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Tue, 18 Aug 2020 11:20:00 +0100 Subject: [PATCH 8/9] Show Gradle version --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 01195f9..4fd31af 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,5 +18,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 13 + - name: Gradle version + run: ./gradlew -version - name: Build with Gradle run: ./gradlew build From 03da78c8d702b6e4d285d294ef8ec64644f988c3 Mon Sep 17 00:00:00 2001 From: Antony Stubbs Date: Tue, 18 Aug 2020 12:07:26 +0100 Subject: [PATCH 9/9] =?UTF-8?q?Turn=20back=20on=20Jabel=20processor,=20now?= =?UTF-8?q?=20that=20I=E2=80=99ve=20discovered=20it=E2=80=99s=20gradle=20v?= =?UTF-8?q?s=20gradlew=20causing=20the=20discrepancy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/build.gradle | 2 +- .../main/java/com/example/JabelExample.java | 28 +++++++++---------- .../java/com/example/JabelExampleTest.java | 18 +++++++----- .../bsideup/jabel/JabelJavacProcessor.java | 4 +-- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/example/build.gradle b/example/build.gradle index 95ca2ba..67aab77 100644 --- a/example/build.gradle +++ b/example/build.gradle @@ -33,7 +33,7 @@ test { } dependencies { -// annotationProcessor project(":jabel-javac-plugin") + annotationProcessor project(":jabel-javac-plugin") testCompile 'junit:junit:4.12' } \ No newline at end of file diff --git a/example/src/main/java/com/example/JabelExample.java b/example/src/main/java/com/example/JabelExample.java index 7ef78c4..d64ad07 100644 --- a/example/src/main/java/com/example/JabelExample.java +++ b/example/src/main/java/com/example/JabelExample.java @@ -65,18 +65,18 @@ public String innerPublic() { } - public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { - var me = 4; - var operation = "squareMe"; - var result = switch (operation) { - case "doubleMe" -> { - yield me * 2; - } - case "squareMe" -> { - yield me * me; - } - default -> me; - }; - - } +// public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { +// var me = 4; +// var operation = "squareMe"; +// var result = switch (operation) { +// case "doubleMe" -> { +// yield me * 2; +// } +// case "squareMe" -> { +// yield me * me; +// } +// default -> me; +// }; +// +// } } diff --git a/example/src/test/java/com/example/JabelExampleTest.java b/example/src/test/java/com/example/JabelExampleTest.java index a7d0230..ff62857 100644 --- a/example/src/test/java/com/example/JabelExampleTest.java +++ b/example/src/test/java/com/example/JabelExampleTest.java @@ -37,8 +37,12 @@ public void testJava13PreviewFeatureTextBlocksJep355(){ """; } + /** + * JEP 354: Switch Expressions (Second Preview) + * https://openjdk.java.net/jeps/354 + */ @Test - public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { + public void testJava13PreviewJep354() { var me = 4; var operation = "squareMe"; var result = switch (operation) { @@ -53,11 +57,11 @@ public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() { assertEquals(16, result); } - - @Test - public void tgesd(){ - JabelExampleTest jabelExampleTest = new JabelExampleTest(); - jabelExampleTest.whenSwitchingOnOperationSquareMe_thenWillReturnSquare(); - } +// +// @Test +// public void tgesd(){ +// JabelExampleTest jabelExampleTest = new JabelExampleTest(); +// jabelExampleTest.whenSwitchingOnOperationSquareMe_thenWillReturnSquare(); +// } } \ No newline at end of file diff --git a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java index b01cd34..0697768 100644 --- a/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java +++ b/jabel-javac-plugin/src/main/java/com/github/bsideup/jabel/JabelJavacProcessor.java @@ -70,11 +70,11 @@ public class JabelJavacProcessor implements Processor { ByteBuddyAgent.install(); ByteBuddy byteBuddy = new ByteBuddy(); -// sourceLevelCheck(byteBuddy); + sourceLevelCheck(byteBuddy); // previewFeatureChecks(byteBuddy); -// featureMinLevelChecks(); + featureMinLevelChecks(); logInfo("Jabel ByteBuddy initialisation complete"); }