diff options
author | Pavel Kirpichenkov <pavel.kirpichenkov@jetbrains.com> | 2020-08-10 12:14:01 +0300 |
---|---|---|
committer | kotlin-ide-monorepo-bot <kotlin-ide-monorepo-bot-no-reply@jetbrains.com> | 2020-11-27 22:03:27 +0000 |
commit | d52a550010700e555b94a57309a7e326ab1d1906 (patch) | |
tree | b46447962efab31db770b3478d3876ebbd1112c6 /analysis | |
parent | aca4ee5cb635646d743290f4bac572d105a5fc3e (diff) | |
download | intellij-kotlin-d52a550010700e555b94a57309a7e326ab1d1906.tar.gz |
Reapply "Introduce @FrontendInternals annotation""
This reverts commit 9ca4717d112f1a935c989bfe93acf0532e500fa5.
^KT-39643 Fixed
Original commit: f431da2a665369f95b987e0a59ee29bc4318f796
GitOrigin-RevId: e707a0d38e65664db994bdedf3a6b00b98366564
Diffstat (limited to 'analysis')
5 files changed, 21 insertions, 1 deletions
diff --git a/analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt b/analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt index 1dce10cc6899..0189152cb630 100644 --- a/analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt +++ b/analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt @@ -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) diff --git a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 7c4d151367f3..79764bdb10ec 100644 --- a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -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>() diff --git a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleResolutionFacadeImpl.kt b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleResolutionFacadeImpl.kt index 75a7f7cc1244..b177751f2636 100644 --- a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleResolutionFacadeImpl.kt +++ b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleResolutionFacadeImpl.kt @@ -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) } diff --git a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt index 5f2e58e7e8b8..bbcff6c48b89 100644 --- a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt +++ b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt @@ -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) diff --git a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt index 15dbd24f8d68..3f42f5ddaa97 100644 --- a/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt +++ b/analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt @@ -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) } |