mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
hide add import fix if qualified name of imported class is not a valid qName (IDEA-137296)
(cherry picked from commit bfae9cef8ff0d4fd773d6ee66f952b324d5e01ec)
This commit is contained in:
+3
-2
@@ -119,7 +119,8 @@ public abstract class ImportClassFixBase<T extends PsiElement, R extends PsiRefe
|
||||
}
|
||||
|
||||
boolean referenceHasTypeParameters = hasTypeParameters(myRef);
|
||||
PsiClass[] classes = PsiShortNamesCache.getInstance(myElement.getProject()).getClassesByName(name, scope);
|
||||
final Project project = myElement.getProject();
|
||||
PsiClass[] classes = PsiShortNamesCache.getInstance(project).getClassesByName(name, scope);
|
||||
if (classes.length == 0) return Collections.emptyList();
|
||||
List<PsiClass> classList = new ArrayList<PsiClass>(classes.length);
|
||||
boolean isAnnotationReference = myElement.getParent() instanceof PsiAnnotation;
|
||||
@@ -130,7 +131,7 @@ public abstract class ImportClassFixBase<T extends PsiElement, R extends PsiRefe
|
||||
if (referenceHasTypeParameters && !aClass.hasTypeParameters()) continue;
|
||||
String qName = aClass.getQualifiedName();
|
||||
if (qName != null) { //filter local classes
|
||||
if (qName.indexOf('.') == -1) continue; //do not show classes from default package)
|
||||
if (qName.indexOf('.') == -1 || !PsiNameHelper.getInstance(project).isQualifiedName(qName)) continue; //do not show classes from default or invalid package
|
||||
if (qName.endsWith(name) && (file == null || ImportFilter.shouldImport(file, qName))) {
|
||||
if (isAccessible(aClass, myElement)) {
|
||||
classList.add(aClass);
|
||||
|
||||
@@ -278,6 +278,21 @@ class Test {
|
||||
assert !myFixture.filterAvailableIntentions("Import class")
|
||||
}
|
||||
|
||||
public void "test don't import class if qualified name is not valid"() {
|
||||
myFixture.addClass('''
|
||||
package a..p;
|
||||
public class MMM {}
|
||||
''')
|
||||
myFixture.configureByText 'a.java', '''
|
||||
class Test {
|
||||
{
|
||||
MM<caret>M m;
|
||||
}
|
||||
}
|
||||
'''
|
||||
assert !myFixture.filterAvailableIntentions("Import class")
|
||||
}
|
||||
|
||||
public void "test don't import class in assignment"() {
|
||||
myFixture.configureByText 'a.java', '''
|
||||
class Test {
|
||||
|
||||
Reference in New Issue
Block a user