From bdf7ed373845c5dffdbb6152cdc7048d7cf19a66 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 12 Mar 2018 17:27:13 +0100 Subject: [PATCH] don't suggest to replace qualifier with import if not accessible (IDEA-188061) --- .../intention/AddImportActionTest.groovy | 13 +++++++++++++ .../UnnecessaryFullyQualifiedNameInspection.java | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/intention/AddImportActionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/intention/AddImportActionTest.groovy index 9aedfafc54e2..8b6934566a38 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/intention/AddImportActionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/intention/AddImportActionTest.groovy @@ -508,6 +508,19 @@ package com.rocket.test; assert myFixture.filterAvailableIntentions('Replace qualified name').isEmpty() } + void "test do not allow to add import on inaccessible class"() { + myFixture.addClass("package foo; class Foo {}") + myFixture.configureByText 'A.java', ''' +package a; +/** + * {@link foo.Foo} + */ +class A {} +''' + myFixture.enableInspections(new UnnecessaryFullyQualifiedNameInspection()) + assert myFixture.filterAvailableIntentions('Replace qualified name').isEmpty() + } + void "test keep methods formatting on add import"() { settings.getCommonSettings(JavaLanguage.INSTANCE).ALIGN_GROUP_FIELD_DECLARATIONS = true diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryFullyQualifiedNameInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryFullyQualifiedNameInspection.java index bc1e4f5b4ddf..a220ce7eb705 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryFullyQualifiedNameInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryFullyQualifiedNameInspection.java @@ -259,6 +259,7 @@ public class UnnecessaryFullyQualifiedNameInspection extends BaseInspection impl collectInnerClassNames(reference, references); } Collections.reverse(references); + PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(containingFile.getProject()).getResolveHelper(); for (final PsiJavaCodeReferenceElement aReference : references) { final PsiElement referenceTarget = aReference.resolve(); if (!(referenceTarget instanceof PsiClass)) { @@ -269,6 +270,9 @@ public class UnnecessaryFullyQualifiedNameInspection extends BaseInspection impl if (qualifiedName == null) { continue; } + if (!resolveHelper.isAccessible(aClass, containingFile, null)) { + continue; + } if (!ImportUtils.nameCanBeImported(qualifiedName, reference)) { continue; }