Reapply "Introduce @FrontendInternals annotation""
This reverts commit 9ca4717d11.
^KT-39643 Fixed
This commit is contained in:
+3
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.idea.FrontendInternals
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.EXACT
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.LIGHT
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.annotations.KOTLINX_SERIALIZABLE_FQ_NAME
|
||||
@@ -91,6 +92,7 @@ internal object IDELightClassContexts {
|
||||
val bindingContext = if (classOrObject is KtClass && classOrObject.isAnnotation()) {
|
||||
// need to make sure default values for parameters are resolved
|
||||
// because java resolve depends on whether there is a default value for an annotation attribute
|
||||
@OptIn(FrontendInternals::class)
|
||||
resolutionFacade.getFrontendService(ResolveElementCache::class.java)
|
||||
.resolvePrimaryConstructorParametersDefaultValues(classOrObject)
|
||||
} else {
|
||||
@@ -136,6 +138,7 @@ internal object IDELightClassContexts {
|
||||
|
||||
|
||||
fun contextForFacade(files: List<KtFile>): LightClassConstructionContext {
|
||||
@OptIn(FrontendInternals::class)
|
||||
val resolveSession = files.first().getResolutionFacade().getFrontendService(ResolveSession::class.java)
|
||||
|
||||
forceResolvePackageDeclarations(files, resolveSession)
|
||||
|
||||
+5
-1
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.idea.FrontendInternals
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassContexts
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.LazyLightClassDataHolder
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
@@ -90,7 +91,9 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
||||
return null
|
||||
}
|
||||
|
||||
override val deprecationResolver: DeprecationResolver get() = resolutionFacade.getFrontendService(DeprecationResolver::class.java)
|
||||
@OptIn(FrontendInternals::class)
|
||||
override val deprecationResolver: DeprecationResolver
|
||||
get() = resolutionFacade.getFrontendService(DeprecationResolver::class.java)
|
||||
|
||||
|
||||
override val typeMapper: KotlinTypeMapper by lazyPub {
|
||||
@@ -205,6 +208,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(FrontendInternals::class)
|
||||
private fun KtElement.getDiagnosticsHolder() =
|
||||
getResolutionFacade().frontendService<LazyLightClassDataHolder.DiagnosticsHolder>()
|
||||
|
||||
|
||||
+6
@@ -25,6 +25,7 @@ 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.FrontendInternals
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
import org.jetbrains.kotlin.idea.project.ResolveElementCache
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
@@ -67,6 +68,7 @@ internal class ModuleResolutionFacadeImpl(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(FrontendInternals::class)
|
||||
val resolveElementCache = getFrontendService(elements.first(), ResolveElementCache::class.java)
|
||||
return runWithCancellationCheck {
|
||||
resolveElementCache.resolveToElements(elements, bodyResolveMode)
|
||||
@@ -95,16 +97,19 @@ internal class ModuleResolutionFacadeImpl(
|
||||
}
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(serviceClass: Class<T>): T = getFrontendService(moduleInfo, serviceClass)
|
||||
|
||||
override fun <T : Any> getIdeService(serviceClass: Class<T>): T {
|
||||
return projectFacade.resolverForModuleInfo(moduleInfo).componentProvider.create(serviceClass)
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(element: PsiElement, serviceClass: Class<T>): T {
|
||||
return projectFacade.resolverForElement(element).componentProvider.getService(serviceClass)
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> tryGetFrontendService(element: PsiElement, serviceClass: Class<T>): T? {
|
||||
return projectFacade.resolverForElement(element).componentProvider.tryGetService(serviceClass)
|
||||
}
|
||||
@@ -113,6 +118,7 @@ internal class ModuleResolutionFacadeImpl(
|
||||
return projectFacade.resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass)
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class<T>): T {
|
||||
return projectFacade.resolverForDescriptor(moduleDescriptor).componentProvider.getService(serviceClass)
|
||||
}
|
||||
|
||||
+5
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.FrontendInternals
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.getNullableModuleInfo
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
@@ -66,6 +67,7 @@ private class ResolutionFacadeWithDebugInfo(
|
||||
override val moduleDescriptor: ModuleDescriptor
|
||||
get() = delegate.moduleDescriptor
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(serviceClass: Class<T>): T {
|
||||
return wrapExceptions({ ResolvingWhat(serviceClass = serviceClass) }) {
|
||||
delegate.getFrontendService(serviceClass)
|
||||
@@ -78,12 +80,14 @@ private class ResolutionFacadeWithDebugInfo(
|
||||
}
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(element: PsiElement, serviceClass: Class<T>): T {
|
||||
return wrapExceptions({ ResolvingWhat(listOf(element), serviceClass = serviceClass) }) {
|
||||
delegate.getFrontendService(element, serviceClass)
|
||||
}
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> tryGetFrontendService(element: PsiElement, serviceClass: Class<T>): T? {
|
||||
return wrapExceptions({ ResolvingWhat(listOf(element), serviceClass = serviceClass) }) {
|
||||
delegate.tryGetFrontendService(element, serviceClass)
|
||||
@@ -94,6 +98,7 @@ private class ResolutionFacadeWithDebugInfo(
|
||||
return delegate.getResolverForProject()
|
||||
}
|
||||
|
||||
@FrontendInternals
|
||||
override fun <T : Any> getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class<T>): T {
|
||||
return wrapExceptions({ ResolvingWhat(serviceClass = serviceClass, moduleDescriptor = moduleDescriptor) }) {
|
||||
delegate.getFrontendService(moduleDescriptor, serviceClass)
|
||||
|
||||
+2
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.FrontendInternals
|
||||
import org.jetbrains.kotlin.idea.caches.lightClasses.KtLightClassForDecompiledDeclaration
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
@@ -111,6 +112,7 @@ fun PsiClass.resolveToDescriptor(
|
||||
} as? ClassDescriptor
|
||||
}
|
||||
|
||||
@OptIn(FrontendInternals::class)
|
||||
private fun PsiElement.getJavaDescriptorResolver(resolutionFacade: ResolutionFacade): JavaDescriptorResolver? {
|
||||
return resolutionFacade.tryGetFrontendService(this, JavaDescriptorResolver::class.java)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user