Fixed KT-2483 "Add import" quick fix offers adding import to non-API class
#KT-2483 Fixed
This commit is contained in:
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.idea.caches.JetShortNamesCache
|
|||||||
import org.jetbrains.kotlin.idea.caches.KotlinIndicesHelper
|
import org.jetbrains.kotlin.idea.caches.KotlinIndicesHelper
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||||
import org.jetbrains.kotlin.idea.util.JetPsiHeuristicsUtil
|
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -142,7 +141,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
|
|||||||
val indicesHelper = KotlinIndicesHelper(file.getProject(), resolutionFacade, bindingContext, searchScope, moduleDescriptor, ::isVisible)
|
val indicesHelper = KotlinIndicesHelper(file.getProject(), resolutionFacade, bindingContext, searchScope, moduleDescriptor, ::isVisible)
|
||||||
|
|
||||||
if (!element.isImportDirectiveExpression() && !JetPsiUtil.isSelectorInQualified(element)) {
|
if (!element.isImportDirectiveExpression() && !JetPsiUtil.isSelectorInQualified(element)) {
|
||||||
result.addAll(getClasses(referenceName, file, searchScope))
|
getClasses(referenceName, file, searchScope).filterTo(result, ::isVisible)
|
||||||
result.addAll(getTopLevelCallables(referenceName, element, indicesHelper))
|
result.addAll(getTopLevelCallables(referenceName, element, indicesHelper))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +158,6 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
|
|||||||
|
|
||||||
private fun getClasses(name: String, file: JetFile, searchScope: GlobalSearchScope): Collection<DeclarationDescriptor>
|
private fun getClasses(name: String, file: JetFile, searchScope: GlobalSearchScope): Collection<DeclarationDescriptor>
|
||||||
= getShortNamesCache(file).getClassesByName(name, searchScope)
|
= getShortNamesCache(file).getClassesByName(name, searchScope)
|
||||||
.filter { JetPsiHeuristicsUtil.isAccessible(it, file) }
|
|
||||||
.map { element.getResolutionFacade().psiClassToDescriptor(it) }
|
.map { element.getResolutionFacade().psiClassToDescriptor(it) }
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
||||||
|
// ERROR: Unresolved reference: Nested
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
Nested
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
||||||
|
// ACTION: Create local variable 'Nested'
|
||||||
|
// ACTION: Create object 'Nested'
|
||||||
|
// ACTION: Create parameter 'Nested'
|
||||||
|
// ACTION: Create property 'Nested'
|
||||||
|
// ERROR: Unresolved reference: Nested
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
<caret>Nested
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package sometest
|
||||||
|
|
||||||
|
private class PrivateClass {
|
||||||
|
class Nested
|
||||||
|
}
|
||||||
@@ -152,6 +152,12 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes
|
|||||||
doTestWithExtraFile(fileName);
|
doTestWithExtraFile(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("noImportForNestedInPrivate.before.Main.kt")
|
||||||
|
public void testNoImportForNestedInPrivate() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/noImportForNestedInPrivate.before.Main.kt");
|
||||||
|
doTestWithExtraFile(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("noImportForPrivateClass.before.Main.kt")
|
@TestMetadata("noImportForPrivateClass.before.Main.kt")
|
||||||
public void testNoImportForPrivateClass() throws Exception {
|
public void testNoImportForPrivateClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/noImportForPrivateClass.before.Main.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/noImportForPrivateClass.before.Main.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user