JS: fix support auto import for class names
This commit is contained in:
@@ -33,9 +33,8 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic
|
|||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.idea.JetBundle
|
import org.jetbrains.kotlin.idea.JetBundle
|
||||||
import org.jetbrains.kotlin.idea.actions.JetAddImportAction
|
import org.jetbrains.kotlin.idea.actions.JetAddImportAction
|
||||||
import org.jetbrains.kotlin.idea.caches.JetShortNamesCache
|
|
||||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
|
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||||
import org.jetbrains.kotlin.idea.core.isVisible
|
import org.jetbrains.kotlin.idea.core.isVisible
|
||||||
import org.jetbrains.kotlin.idea.core.psiClassToDescriptor
|
import org.jetbrains.kotlin.idea.core.psiClassToDescriptor
|
||||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||||
@@ -141,7 +140,12 @@ 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)) {
|
||||||
getClasses(referenceName, file, searchScope).filterTo(result, ::isVisible)
|
if (ProjectStructureUtil.isJsKotlinModule(file)) {
|
||||||
|
result.addAll(indicesHelper.getClassDescriptors({ it == referenceName }, { true }))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
getClasses(referenceName, file, searchScope).filterTo(result, ::isVisible)
|
||||||
|
}
|
||||||
result.addAll(indicesHelper.getTopLevelCallablesByName(referenceName))
|
result.addAll(indicesHelper.getTopLevelCallablesByName(referenceName))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,13 +160,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
|
|||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
||||||
private fun getShortNamesCache(jetFile: JetFile): PsiShortNamesCache {
|
private fun getShortNamesCache(jetFile: JetFile): PsiShortNamesCache = PsiShortNamesCache.getInstance(jetFile.getProject())
|
||||||
// if we are in JS module, do not include non-kotlin classes
|
|
||||||
return if (ProjectStructureUtil.isJsKotlinModule(jetFile))
|
|
||||||
JetShortNamesCache.getKotlinInstance(jetFile.getProject())
|
|
||||||
else
|
|
||||||
PsiShortNamesCache.getInstance(jetFile.getProject())
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val ERRORS = setOf(Errors.UNRESOLVED_REFERENCE, Errors.UNRESOLVED_REFERENCE_WRONG_RECEIVER)
|
private val ERRORS = setOf(Errors.UNRESOLVED_REFERENCE, Errors.UNRESOLVED_REFERENCE_WRONG_RECEIVER)
|
||||||
|
|||||||
Reference in New Issue
Block a user