[java-highlighting] WIP IDEA-372968 Support JEP 511: Module Import Declarations

- test for quick-fix "increase language level"
- fix templates

(cherry picked from commit 37009091dc826c81d496e90cdb3a2c3b2da147c3)


(cherry picked from commit c0f3ed9451db84ec02e4e3af118f82f5bc4d7fdf)

IJ-MR-169535

GitOrigin-RevId: 7e4152035b0502b6229747ef55056b5cd613359a
This commit is contained in:
Mikhail Pyltsin
2025-06-23 12:16:52 +02:00
committed by intellij-monorepo-bot
parent a20e0b6340
commit 08cc5dd193
4 changed files with 19 additions and 10 deletions

View File

@@ -171,11 +171,11 @@ enum class JavaFeature {
* @see PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS
* @see TRANSITIVE_DEPENDENCY_ON_JAVA_BASE
*/
MODULE_IMPORT_DECLARATIONS(LanguageLevel.JDK_23_PREVIEW, "feature.module.import.declarations") { //jep 776
MODULE_IMPORT_DECLARATIONS(LanguageLevel.JDK_23_PREVIEW, "feature.module.import.declarations") { //
override fun isSufficient(useSiteLevel: LanguageLevel): Boolean {
return super.isSufficient(useSiteLevel) ||
useSiteLevel.isAtLeast(LanguageLevel.JDK_25) ||
LanguageLevel.JDK_24_PREVIEW == useSiteLevel //jep 494
return useSiteLevel.isAtLeast(LanguageLevel.JDK_25) ||
LanguageLevel.JDK_24_PREVIEW == useSiteLevel || //jep 494
LanguageLevel.JDK_23_PREVIEW == useSiteLevel //jep 776
}
override val standardLevel: LanguageLevel = LanguageLevel.JDK_25
@@ -192,10 +192,11 @@ enum class JavaFeature {
* @see MODULE_IMPORT_DECLARATIONS
* @see TRANSITIVE_DEPENDENCY_ON_JAVA_BASE
*/
PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS(LanguageLevel.JDK_24_PREVIEW, "feature.package.import.shadow.module.import") { //jep 494
PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS(LanguageLevel.JDK_24_PREVIEW, "feature.package.import.shadow.module.import") {
override fun isSufficient(useSiteLevel: LanguageLevel): Boolean {
return super.isSufficient(useSiteLevel) ||
useSiteLevel.isAtLeast(LanguageLevel.JDK_25)
useSiteLevel.isAtLeast(LanguageLevel.JDK_25) ||
LanguageLevel.JDK_24_PREVIEW == useSiteLevel; //jep 494
}
override val standardLevel: LanguageLevel = LanguageLevel.JDK_25
@@ -208,8 +209,8 @@ enum class JavaFeature {
*/
TRANSITIVE_DEPENDENCY_ON_JAVA_BASE(LanguageLevel.JDK_24_PREVIEW, "feature.package.transitive.dependency.on.java.base") { //jep 494
override fun isSufficient(useSiteLevel: LanguageLevel): Boolean {
return super.isSufficient(useSiteLevel) ||
useSiteLevel.isAtLeast(LanguageLevel.JDK_25)
return useSiteLevel.isAtLeast(LanguageLevel.JDK_25) ||
LanguageLevel.JDK_24_PREVIEW == useSiteLevel//jep 494
}
override val standardLevel: LanguageLevel = LanguageLevel.JDK_25

View File

@@ -0,0 +1,4 @@
import module java<caret>.base;
public class Sample{
}

View File

@@ -27,6 +27,10 @@ public abstract class IncreaseLanguageLevelFixTest extends LightDaemonAnalyzerTe
public void testStatementBeforeSuper() {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_24, () -> doTest(LanguageLevel.JDK_25));
}
public void testModuleImportStatement() {
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_24, () -> doTest(LanguageLevel.JDK_25));
}
}
public static class IncreaseLanguageLevel23FixTest extends IncreaseLanguageLevelFixTest {

View File

@@ -298,9 +298,9 @@ public class JavaLiveTemplateTest extends LiveTemplateTestCase {
Set<TemplateContextType> contextTypeSet = TemplateManagerImpl
.getApplicableContextTypes(TemplateActionContext.expanding(myFixture.getFile(), myFixture.getEditor()));
List<Class<? extends TemplateContextType>> applicableContextTypesClasses = ContainerUtil.map(contextTypeSet, TemplateContextType::getClass);
List<Class<? extends JavaCodeContextType>> declarationTypes = Arrays.asList(JavaCodeContextType.Declaration.class, JavaCodeContextType.NormalClassDeclarationBeforeShortMainMethod.class);
List<Class<? extends JavaCodeContextType>> declarationTypes = Arrays.asList(JavaCodeContextType.Declaration.class, JavaCodeContextType.NormalClassDeclarationAfterShortMainMethod.class);
assertEquals(applicableContextTypesClasses, declarationTypes);
assertEquals(declarationTypes, applicableContextTypesClasses);
}
public void testJavaStatementContext() {