[java] IDEA-350754 Java wildcard imports not recognized when class is located in multi-release JAR

GitOrigin-RevId: 669f22c7f718a83129cf9c88d89a55ba3df2126a
This commit is contained in:
Tagir Valeev
2024-04-16 16:16:57 +02:00
committed by intellij-monorepo-bot
parent 76e2c396bc
commit 4dcafc063c
2 changed files with 50 additions and 0 deletions

View File

@@ -30,6 +30,8 @@ public final class JavaVersionBasedScope extends DelegatingGlobalSearchScope {
@Override
public boolean contains(@NotNull VirtualFile file) {
if (!super.contains(file)) return false;
// Do not filter directories, as they may contain non-versioned files
if (file.isDirectory()) return true;
VirtualFile baseFile = JavaMultiReleaseUtil.findBaseFile(file);
if (myLevel.isLessThan(JavaMultiReleaseUtil.MIN_MULTI_RELEASE_VERSION)) {
// In pre-multi-release

View File

@@ -0,0 +1,48 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.java.codeInsight.daemon;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import com.intellij.testFramework.fixtures.MavenDependencyUtil;
import org.jetbrains.annotations.NotNull;
public final class MultiReleaseDepTest extends LightJavaCodeInsightFixtureTestCase {
private static final @NotNull LightProjectDescriptor MY_DESCRIPTOR = new LightProjectDescriptor() {
@Override
public @NotNull Sdk getSdk() {
return IdeaTestUtil.getMockJdk21();
}
@Override
protected void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @NotNull ContentEntry contentEntry) {
super.configureModule(module, model, contentEntry);
MavenDependencyUtil.addFromMaven(model, "org.apache.logging.log4j:log4j-api:2.20.0"); // Multi-release-JAR
}
};
@Override
protected @NotNull LightProjectDescriptor getProjectDescriptor() {
return MY_DESCRIPTOR;
}
public void testOnDemandResolveIntoMultiReleaseJar() {
// IDEA-350754
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> {
myFixture.configureByText("Test.java", """
package com.example;
import org.apache.logging.log4j.*;
public class Test {
private static final Logger log = LogManager.getLogger();
}""");
myFixture.checkHighlighting();
});
}
}