Merge ResolutionFacadeImpl and KotlinResolveCache, rewrite JavaResolveExtension
This commit is contained in:
@@ -24,7 +24,7 @@ import com.intellij.psi.stubs.StringStubIndexExtension
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getService
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.frontendService
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
import org.jetbrains.kotlin.idea.stubindex.*
|
||||
@@ -115,7 +115,7 @@ public class KotlinIndicesHelper(
|
||||
private fun possibleReceiverTypeNames(receiverValues: Collection<ReceiverValue>, dataFlowInfo: DataFlowInfo, bindingContext: BindingContext): Set<String> {
|
||||
val result = HashSet<String>()
|
||||
for (receiverValue in receiverValues) {
|
||||
val smartCastManager = resolutionFacade.getService<SmartCastManager>(moduleDescriptor)
|
||||
val smartCastManager = resolutionFacade.frontendService<SmartCastManager>(moduleDescriptor)
|
||||
for (type in smartCastManager.getSmartCastVariants(receiverValue, bindingContext, moduleDescriptor, dataFlowInfo)) {
|
||||
result.addTypeNames(type)
|
||||
}
|
||||
|
||||
@@ -16,25 +16,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.core
|
||||
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import com.intellij.psi.PsiClass
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
import org.jetbrains.kotlin.asJava.KotlinLightClass
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.KotlinLightClassForDecompiledDeclaration
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolveExtension
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.KotlinLightClassForDecompiledDeclaration
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.frontendService
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||
|
||||
public fun ResolutionFacade.psiClassToDescriptor(
|
||||
psiClass: PsiClass,
|
||||
declarationTranslator: (JetClassOrObject) -> JetClassOrObject? = { it }
|
||||
): ClassifierDescriptor? {
|
||||
return if (psiClass is KotlinLightClass && psiClass !is KotlinLightClassForDecompiledDeclaration) {
|
||||
val origin = psiClass.getOrigin ()?: return null
|
||||
val origin = psiClass.getOrigin () ?: return null
|
||||
val declaration = declarationTranslator(origin) ?: return null
|
||||
resolveToDescriptor(declaration)
|
||||
} else {
|
||||
get(JavaResolveExtension)(psiClass).first.resolveClass(JavaClassImpl(psiClass))
|
||||
}
|
||||
else {
|
||||
frontendService<JavaDescriptorResolver>(psiClass).resolveClass(JavaClassImpl(psiClass))
|
||||
} as? ClassifierDescriptor
|
||||
}
|
||||
Reference in New Issue
Block a user