Java: allow importing a class when there is a variable/method with the exact same name (IDEA-216101)

GitOrigin-RevId: e4c5b86ce2f4910711e33581c58d271dadbf6970
This commit is contained in:
Bas Leijdekkers
2024-10-21 10:51:02 +00:00
committed by intellij-monorepo-bot
parent 7d5cd09250
commit b4c155f5de
4 changed files with 23 additions and 3 deletions
@@ -145,7 +145,7 @@ public abstract class ImportClassFixBase<T extends PsiElement, R extends PsiRefe
PsiElement element = result.getElement();
// already imported
// can happen when e.g., class name happened to be in a method position
if (result.isValidResult() || element instanceof PsiClass && result.getCurrentFileResolveScope() instanceof PsiImportStatement) {
if (element instanceof PsiClass && (result.isValidResult() || result.getCurrentFileResolveScope() instanceof PsiImportStatement)) {
return PsiClass.EMPTY_ARRAY;
}
}
@@ -299,7 +299,7 @@ public final class JavaReferenceAdjuster implements ReferenceAdjuster {
}
}
}
return helper.resolveReferencedVariable(referenceText, psiReference) == null;
return !(psiReference instanceof PsiReferenceExpression) || helper.resolveReferencedVariable(referenceText, psiReference) == null;
}
return false;
}
@@ -1,6 +1,6 @@
public class Res {
public static final Res.R<String, Object> R = new R<>() {
public static final R<String, Object> R = new R<>() {
final String param = "";
@Override
@@ -76,6 +76,26 @@ public class AddImportActionTest extends LightJavaCodeInsightFixtureTestCase {
""");
}
public void testClassNameResolvesToVariableName() {
myFixture.configureByText(JavaFileType.INSTANCE, """
public class Base {
private <caret>URL URL;
protected void test(URL url) {
}
}""");
importClass();
myFixture.checkResult("""
import java.net.URL;
public class Base {
private URL URL;
protected void test(URL url) {
}
}""");
}
public void testMethodReference() {
myFixture.configureByText(JavaFileType.INSTANCE, """
public class Importing {