From ea3c2ad956d67044d34be95058a2baafdce73729 Mon Sep 17 00:00:00 2001 From: sschr15 Date: Fri, 8 Dec 2023 21:15:19 -0600 Subject: [PATCH] Java 21 string template tests (#335) --- build.gradle | 2 +- .../java/decompiler/SingleClassesTest.java | 4 ++ testData/results/pkg/TestCustomProcessor.dec | 56 +++++++++++++++++++ testData/results/pkg/TestRawProcessor.dec | 43 ++++++++++++++ testData/results/pkg/TestStrProcessor.dec | 45 +++++++++++++++ .../pkg/TestCustomProcessor.java | 13 +++++ .../java21preview/pkg/TestFmtProcessor.java | 13 +++++ .../java21preview/pkg/TestRawProcessor.java | 13 +++++ .../java21preview/pkg/TestStrProcessor.java | 10 ++++ .../decompiler/SingleClassesTestBase.java | 1 + 10 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 testData/results/pkg/TestCustomProcessor.dec create mode 100644 testData/results/pkg/TestRawProcessor.dec create mode 100644 testData/results/pkg/TestStrProcessor.dec create mode 100644 testData/src/java21preview/pkg/TestCustomProcessor.java create mode 100644 testData/src/java21preview/pkg/TestFmtProcessor.java create mode 100644 testData/src/java21preview/pkg/TestRawProcessor.java create mode 100644 testData/src/java21preview/pkg/TestStrProcessor.java diff --git a/build.gradle b/build.gradle index 29acb517ef..d8fc14acbb 100644 --- a/build.gradle +++ b/build.gradle @@ -143,7 +143,7 @@ def testJavaRuntimes = [:] languageVersion = JavaLanguageVersion.of(runtimeVersion) } } -[16, 17, 19].forEach { version -> createJavaTestDataSet(version, "Preview", ["--enable-preview"]) } +[16, 17, 19, 21].forEach { version -> createJavaTestDataSet(version, "Preview", ["--enable-preview"]) } [8, 16].forEach { version -> createJavaTestDataSet(version, "NoDebug", ["-g:none"])} task compileTestDataJasm(type: JasmCompile) { diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index 8c137b113e..5367b881eb 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -689,6 +689,10 @@ private void registerDefault() { register(JAVA_8, "TestTrySplit"); register(JAVA_8, "TestWhileForeach"); register(JAVA_21, "TestRecordPatterns1"); + register(JAVA_21_PREVIEW, "TestStrProcessor"); + register(JAVA_21_PREVIEW, "TestRawProcessor"); + register(JAVA_21_PREVIEW, "TestFmtProcessor"); + register(JAVA_21_PREVIEW, "TestCustomProcessor"); } private void registerEntireClassPath() { diff --git a/testData/results/pkg/TestCustomProcessor.dec b/testData/results/pkg/TestCustomProcessor.dec new file mode 100644 index 0000000000..4a21e9c075 --- /dev/null +++ b/testData/results/pkg/TestCustomProcessor.dec @@ -0,0 +1,56 @@ +package pkg; + +import java.lang.StringTemplate.Processor; +import java.lang.runtime.TemplateRuntime; + +public class TestCustomProcessor { + static Processor processor; + + public void test() { + String s = "Hello";// 7 + int i = 42;// 8 + double d = 3.14159;// 9 + Object result = processor.process(TemplateRuntime.newStringTemplate<"process","Text: "," "," ","">(s, i, d));// 11 + }// 12 +} + +class 'pkg/TestCustomProcessor' { + method 'test ()V' { + 0 9 + 1 9 + 2 9 + 3 10 + 4 10 + 5 10 + 6 11 + 7 11 + 8 11 + 9 11 + a 12 + b 12 + c 12 + d 12 + e 12 + f 12 + 10 12 + 11 12 + 12 12 + 13 12 + 14 12 + 15 12 + 16 12 + 17 12 + 18 12 + 19 12 + 1a 12 + 1b 12 + 1c 13 + } +} + +Lines mapping: +7 <-> 10 +8 <-> 11 +9 <-> 12 +11 <-> 13 +12 <-> 14 diff --git a/testData/results/pkg/TestRawProcessor.dec b/testData/results/pkg/TestRawProcessor.dec new file mode 100644 index 0000000000..d8b64d5764 --- /dev/null +++ b/testData/results/pkg/TestRawProcessor.dec @@ -0,0 +1,43 @@ +package pkg; + +import java.lang.runtime.TemplateRuntime; + +public class TestRawProcessor { + public void test() { + String s = "Hello";// 7 + int i = 42;// 8 + Object o = null;// 9 + StringTemplate template = TemplateRuntime.newStringTemplate<"process","Text: "," "," ","">(s, i, o);// 11 + }// 12 +} + +class 'pkg/TestRawProcessor' { + method 'test ()V' { + 0 6 + 1 6 + 2 6 + 3 7 + 4 7 + 5 7 + 6 8 + 7 8 + 8 9 + 9 9 + a 9 + b 9 + c 9 + d 9 + e 9 + f 9 + 10 9 + 11 9 + 12 10 + } +} + +Lines mapping: +7 <-> 7 +8 <-> 8 +9 <-> 9 +11 <-> 10 +12 <-> 11 diff --git a/testData/results/pkg/TestStrProcessor.dec b/testData/results/pkg/TestStrProcessor.dec new file mode 100644 index 0000000000..ce4e6193b0 --- /dev/null +++ b/testData/results/pkg/TestStrProcessor.dec @@ -0,0 +1,45 @@ +package pkg; + +public class TestStrProcessor { + public void test() { + String s = "Hello";// 5 + int i = 42;// 6 + Object o = null;// 7 + System.out.println("Text: " + s + " " + i + " " + o);// 8 + }// 9 +} + +class 'pkg/TestStrProcessor' { + method 'test ()V' { + 0 4 + 1 4 + 2 4 + 3 5 + 4 5 + 5 5 + 6 6 + 7 6 + 8 7 + 9 7 + a 7 + b 7 + c 7 + d 7 + 11 7 + 12 7 + 13 7 + 14 7 + 15 7 + 16 7 + 17 7 + 18 7 + 19 8 + } +} + +Lines mapping: +5 <-> 5 +6 <-> 6 +7 <-> 7 +8 <-> 8 +9 <-> 9 diff --git a/testData/src/java21preview/pkg/TestCustomProcessor.java b/testData/src/java21preview/pkg/TestCustomProcessor.java new file mode 100644 index 0000000000..516ff5c4a0 --- /dev/null +++ b/testData/src/java21preview/pkg/TestCustomProcessor.java @@ -0,0 +1,13 @@ +package pkg; + +public class TestCustomProcessor { + static StringTemplate.Processor processor; + + public void test() { + String s = "Hello"; + int i = 42; + double d = 3.14159; + + Object result = processor."Text: \{s} \{i} \{d}"; + } +} diff --git a/testData/src/java21preview/pkg/TestFmtProcessor.java b/testData/src/java21preview/pkg/TestFmtProcessor.java new file mode 100644 index 0000000000..bdf786b01c --- /dev/null +++ b/testData/src/java21preview/pkg/TestFmtProcessor.java @@ -0,0 +1,13 @@ +package pkg; + +import static java.util.FormatProcessor.FMT; + +public class TestFmtProcessor { + public void test() { + String s = "Hello"; + int i = 42; + double d = 3.14159; + + System.out.println(FMT."Text: %s\{s} %4d\{i} %.2f\{d}"); + } +} diff --git a/testData/src/java21preview/pkg/TestRawProcessor.java b/testData/src/java21preview/pkg/TestRawProcessor.java new file mode 100644 index 0000000000..53a84076f4 --- /dev/null +++ b/testData/src/java21preview/pkg/TestRawProcessor.java @@ -0,0 +1,13 @@ +package pkg; + +import static java.lang.StringTemplate.RAW; + +public class TestRawProcessor { + public void test() { + String s = "Hello"; + int i = 42; + Object o = null; + + StringTemplate template = RAW."Text: \{s} \{i} \{o}"; + } +} diff --git a/testData/src/java21preview/pkg/TestStrProcessor.java b/testData/src/java21preview/pkg/TestStrProcessor.java new file mode 100644 index 0000000000..ac3e54c2d9 --- /dev/null +++ b/testData/src/java21preview/pkg/TestStrProcessor.java @@ -0,0 +1,10 @@ +package pkg; + +public class TestStrProcessor { + public void test() { + String s = "Hello"; + int i = 42; + Object o = null; + System.out.println(STR."Text: \{s} \{i} \{o}"); + } +} diff --git a/testFixtures/org/jetbrains/java/decompiler/SingleClassesTestBase.java b/testFixtures/org/jetbrains/java/decompiler/SingleClassesTestBase.java index 0e8dfefa39..59b2d8f033 100644 --- a/testFixtures/org/jetbrains/java/decompiler/SingleClassesTestBase.java +++ b/testFixtures/org/jetbrains/java/decompiler/SingleClassesTestBase.java @@ -286,6 +286,7 @@ public enum Version { JAVA_17_PREVIEW(17, "preview", "Preview"), JAVA_19_PREVIEW(19, "preview", "Preview"), JAVA_21(21), + JAVA_21_PREVIEW(21, "preview", "Preview"), GROOVY("groovy", "Groovy"), KOTLIN("kt", "Kotlin"), SCALA("scala", "Scala"),