diff --git a/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target b/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target index 563ebf3342..50e2c00282 100644 --- a/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target +++ b/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target @@ -27,7 +27,8 @@ - + + @@ -37,7 +38,7 @@ - + diff --git a/org.eclipse.jdt.ls.tests/fakejdk/23/rtstubs.jar b/org.eclipse.jdt.ls.tests/fakejdk/23/rtstubs.jar new file mode 100644 index 0000000000..fb6cb93825 Binary files /dev/null and b/org.eclipse.jdt.ls.tests/fakejdk/23/rtstubs.jar differ diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.classpath b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.classpath new file mode 100644 index 0000000000..374ef565da --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.project b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.project new file mode 100644 index 0000000000..91ee42cf05 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.project @@ -0,0 +1,17 @@ + + + java23 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..125a3d3da7 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,16 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=23 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=23 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=enabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=23 + diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/UnnamedWithString.java b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/UnnamedWithString.java new file mode 100644 index 0000000000..8f14cf779f --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/UnnamedWithString.java @@ -0,0 +1,7 @@ +String foo() { + return "foo"; +} + +void main() { + System.out.println(foo()); +} diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/foo/bar/Foo.java b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/foo/bar/Foo.java new file mode 100644 index 0000000000..33940688a9 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/foo/bar/Foo.java @@ -0,0 +1,11 @@ +package foo.bar; + +/** + * It's a Foo class + */ +public class Foo { + public Foo() { + System.out.println(); + super(); + } +} diff --git a/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/org/sample/Test.java b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/org/sample/Test.java new file mode 100644 index 0000000000..aca1a4ec7e --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/eclipse/java23/src/main/java/org/sample/Test.java @@ -0,0 +1,4 @@ +package org.sample; + +public class Test { +} \ No newline at end of file diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.classpath b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.classpath new file mode 100644 index 0000000000..87b28c458e --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.project b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.project new file mode 100644 index 0000000000..d5da50115d --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.project @@ -0,0 +1,23 @@ + + + salut-java23 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..9d3d41e848 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,17 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=23 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=23 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=enabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=23 + + diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000000..f897a7f1cb --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/pom.xml b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/pom.xml new file mode 100644 index 0000000000..be98d974e3 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + foo.bar + salut-java23 + 0.0.1-SNAPSHOT + + + + maven-compiler-plugin + 3.8.1 + + 23 + --enable-preview + + + + + + + org.apache.commons + commons-lang3 + 3.5 + + + diff --git a/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/src/main/java/org/sample/Bar.java b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/src/main/java/org/sample/Bar.java new file mode 100644 index 0000000000..c8839a8886 --- /dev/null +++ b/org.eclipse.jdt.ls.tests/projects/maven/salut-java23/src/main/java/org/sample/Bar.java @@ -0,0 +1,14 @@ +package org.sample; + +/** + * This is Bar + */ +public class Bar { + + public static void main(String[] args) { + Object foo = "x"; + if (foo instanceof String str) { + System.out.println(str); + } + } +} diff --git a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/EclipseProjectImporterTest.java b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/EclipseProjectImporterTest.java index c0b2640df5..62f7c67fa9 100644 --- a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/EclipseProjectImporterTest.java +++ b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/EclipseProjectImporterTest.java @@ -191,7 +191,7 @@ public void testPreviewFeatures16() throws Exception { @Test public void testPreviewFeaturesDisabledByDefault() throws Exception { - String name = "java22"; + String name = "java23"; importProjects("eclipse/" + name); IProject project = getProject(name); assertIsJavaProject(project); diff --git a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/InvisibleProjectImporterTest.java b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/InvisibleProjectImporterTest.java index f78784f26e..4830f01097 100644 --- a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/InvisibleProjectImporterTest.java +++ b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/InvisibleProjectImporterTest.java @@ -204,7 +204,7 @@ public void getPackageName() throws Exception { public void testPreviewFeaturesEnabledByDefault() throws Exception { String defaultJVM = JavaRuntime.getDefaultVMInstall().getId(); try { - TestVMType.setTestJREAsDefault("22"); + TestVMType.setTestJREAsDefault("23"); IProject invisibleProject = copyAndImportFolder("singlefile/java14", "foo/bar/Foo.java"); assertTrue(invisibleProject.exists()); assertNoErrors(invisibleProject); diff --git a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/MavenProjectImporterTest.java b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/MavenProjectImporterTest.java index 2b7b6892f7..d002a00b10 100644 --- a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/MavenProjectImporterTest.java +++ b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/MavenProjectImporterTest.java @@ -370,6 +370,16 @@ public void testJava22Project() throws Exception { IJavaProject javaProject = JavaCore.create(project); assertEquals(JavaCore.ENABLED, javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, false)); assertEquals(JavaCore.IGNORE, javaProject.getOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, false)); + assertHasErrors(project, "Preview features enabled at an invalid source release level"); + } + + public void testJava23Project() throws Exception { + IProject project = importMavenProject("salut-java23"); + assertIsJavaProject(project); + assertEquals("23", getJavaSourceLevel(project)); + IJavaProject javaProject = JavaCore.create(project); + assertEquals(JavaCore.ENABLED, javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, false)); + assertEquals(JavaCore.IGNORE, javaProject.getOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, false)); assertNoErrors(project); }