Avoid exception from autoimport fix with misconfigured analyzer

This commit is contained in:
Dmitry Jemerov
2017-08-24 12:55:31 +02:00
parent 8cf7f7a8f3
commit 83a1d6e5ca
3 changed files with 7 additions and 1 deletions
@@ -45,6 +45,7 @@ interface ResolutionFacade {
// get service for the module defined by PsiElement/ModuleDescriptor passed as parameter
fun <T : Any> getFrontendService(element: PsiElement, serviceClass: Class<T>): T
fun <T : Any> tryGetFrontendService(element: PsiElement, serviceClass: Class<T>): T?
fun <T : Any> getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class<T>): T
@@ -106,7 +106,7 @@ fun PsiClass.resolveToDescriptor(
private fun PsiElement.getJavaDescriptorResolver(resolutionFacade: ResolutionFacade?): JavaDescriptorResolver? {
if (resolutionFacade != null) {
return resolutionFacade.getFrontendService(this, JavaDescriptorResolver::class.java)
return resolutionFacade.tryGetFrontendService(this, JavaDescriptorResolver::class.java)
}
else {
//TODO_R: should this work in scripts?
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.container.getService
import org.jetbrains.kotlin.container.tryGetService
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.idea.project.ResolveElementCache
@@ -82,6 +83,10 @@ internal class ResolutionFacadeImpl(
return getFrontendService(element.getModuleInfo(), serviceClass)
}
override fun <T : Any> tryGetFrontendService(element: PsiElement, serviceClass: Class<T>): T? {
return projectFacade.resolverForModuleInfo(element.getModuleInfo()).componentProvider.tryGetService(serviceClass)
}
fun <T : Any> getFrontendService(ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T {
return projectFacade.resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass)
}