From 83a1d6e5ca7d6e482417952231b9a518767887bf Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 24 Aug 2017 12:55:31 +0200 Subject: [PATCH] Avoid exception from autoimport fix with misconfigured analyzer --- .../org/jetbrains/kotlin/idea/resolve/ResolutionFacade.kt | 1 + .../kotlin/idea/caches/resolve/JavaResolveExtension.kt | 2 +- .../kotlin/idea/caches/resolve/ResolutionFacadeImpl.kt | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/resolve/ResolutionFacade.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/resolve/ResolutionFacade.kt index 8968d444d2b..a84f006840c 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/resolve/ResolutionFacade.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/resolve/ResolutionFacade.kt @@ -45,6 +45,7 @@ interface ResolutionFacade { // get service for the module defined by PsiElement/ModuleDescriptor passed as parameter fun getFrontendService(element: PsiElement, serviceClass: Class): T + fun tryGetFrontendService(element: PsiElement, serviceClass: Class): T? fun getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class): T diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index 943a303b7ce..772071e4cbb 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -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? diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeImpl.kt index 15ca51ca5f1..ab377531150 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeImpl.kt @@ -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 tryGetFrontendService(element: PsiElement, serviceClass: Class): T? { + return projectFacade.resolverForModuleInfo(element.getModuleInfo()).componentProvider.tryGetService(serviceClass) + } + fun getFrontendService(ideaModuleInfo: IdeaModuleInfo, serviceClass: Class): T { return projectFacade.resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass) }