Don't throw exception when resolving out-of-content-root PSI elements to descriptors (EA-92177 assert: ResolverForProjectImpl.descriptorForModule)
This commit is contained in:
+1
-1
@@ -114,7 +114,7 @@ private fun PsiElement.getJavaDescriptorResolver(resolutionFacade: ResolutionFac
|
||||
val cacheService = KotlinCacheService.getInstance(project)
|
||||
val moduleInfo = this.getNullableModuleInfo() ?: return null
|
||||
@Suppress("DEPRECATION")
|
||||
return (cacheService as? KotlinCacheServiceImpl)?.getProjectService(JvmPlatform, moduleInfo, JavaDescriptorResolver::class.java)
|
||||
return (cacheService as? KotlinCacheServiceImpl)?.tryGetProjectService(JvmPlatform, moduleInfo, JavaDescriptorResolver::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -170,6 +170,10 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
|
||||
return globalFacade(platform, ideaModuleInfo.sdk).resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass)
|
||||
}
|
||||
|
||||
fun <T : Any> tryGetProjectService(platform: TargetPlatform, ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T? {
|
||||
return globalFacade(platform, ideaModuleInfo.sdk).tryGetResolverForModuleInfo(ideaModuleInfo)?.componentProvider?.getService(serviceClass)
|
||||
}
|
||||
|
||||
private fun globalFacade(platform: TargetPlatform, sdk: Sdk?) =
|
||||
getOrBuildGlobalFacade(platform, sdk).facadeForModules
|
||||
|
||||
|
||||
+1
@@ -46,6 +46,7 @@ internal class ProjectResolutionFacade(
|
||||
get() = globalContext.storageManager.compute { cachedValue.value }
|
||||
|
||||
fun resolverForModuleInfo(moduleInfo: IdeaModuleInfo) = moduleResolverProvider.resolverForProject.resolverForModule(moduleInfo)
|
||||
fun tryGetResolverForModuleInfo(moduleInfo: IdeaModuleInfo) = moduleResolverProvider.resolverForProject.tryGetResolverForModule(moduleInfo)
|
||||
fun resolverForDescriptor(moduleDescriptor: ModuleDescriptor) = moduleResolverProvider.resolverForProject.resolverForModuleDescriptor(moduleDescriptor)
|
||||
|
||||
fun findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor {
|
||||
|
||||
Reference in New Issue
Block a user