JS: fix support auto import for class names

This commit is contained in:
Michael Nedzelsky
2015-03-16 18:01:07 +03:00
parent 15ebab4f7e
commit c62b1fac69
@@ -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)