Refactoring: visibility restrictions

This commit is contained in:
Nikolay Krasko
2018-02-26 20:32:30 +03:00
parent 38a79086d3
commit 666d31bdc4
5 changed files with 25 additions and 17 deletions
@@ -85,7 +85,7 @@ class IDELightClassConstructionContext(bindingContext: BindingContext, module: M
override fun toString() = "${this.javaClass.simpleName}:$mode"
}
object IDELightClassContexts {
internal object IDELightClassContexts {
private val LOG = Logger.getInstance(this::class.java)
@@ -10,7 +10,7 @@ import com.intellij.psi.*
import org.jetbrains.org.objectweb.asm.Type
import org.jetbrains.org.objectweb.asm.Type.*
object MapPsiToAsmDesc {
internal object MapPsiToAsmDesc {
fun typeDesc(type: PsiType): String = when (type) {
PsiType.VOID -> primitive(VOID_TYPE)
@@ -175,10 +175,12 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private fun globalFacade(settings: PlatformAnalysisSettings) =
getOrBuildGlobalFacade(settings).facadeForModules
private fun librariesFacade(settings: PlatformAnalysisSettings) = getOrBuildGlobalFacade(settings).facadeForLibraries
private fun librariesFacade(settings: PlatformAnalysisSettings) =
getOrBuildGlobalFacade(settings).facadeForLibraries
@Synchronized
private fun getOrBuildGlobalFacade(settings: PlatformAnalysisSettings) = globalFacadesPerPlatformAndSdk[settings]
private fun getOrBuildGlobalFacade(settings: PlatformAnalysisSettings) =
globalFacadesPerPlatformAndSdk[settings]
private val IdeaModuleInfo.sdk: Sdk? get() = dependencies().firstIsInstanceOrNull<SdkInfo>()?.sdk
@@ -306,7 +308,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
object : KotlinSuppressCache() {
override fun getSuppressionAnnotations(annotated: KtAnnotated): List<AnnotationDescriptor> {
if (annotated.annotationEntries.none {
it.calleeExpression?.text?.endsWith(suppressAnnotationShortName) == true
it.calleeExpression?.text?.endsWith(SUPPRESS_ANNOTATION_SHORT_NAME) == true
}
) {
// Avoid running resolve heuristics
@@ -399,11 +401,13 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
override fun getResolutionFacadeByModuleInfo(moduleInfo: ModuleInfo, platform: TargetPlatform): ResolutionFacade? =
(moduleInfo as? IdeaModuleInfo)?.let { getResolutionFacadeByModuleInfo(it, platform) }
private fun Collection<KtFile>.filterNotInProjectSource(moduleInfo: IdeaModuleInfo) = mapNotNull {
if (it is KtCodeFragment) it.getContextFile() else it
}.filter {
!ProjectRootsUtil.isInProjectSource(it) || !moduleInfo.contentScope().contains(it)
}.toSet()
private fun Collection<KtFile>.filterNotInProjectSource(moduleInfo: IdeaModuleInfo): Set<KtFile> {
return mapNotNull {
if (it is KtCodeFragment) it.getContextFile() else it
}.filter {
!ProjectRootsUtil.isInProjectSource(it) || !moduleInfo.contentScope().contains(it)
}.toSet()
}
private fun KtCodeFragment.getContextFile(): KtFile? {
val contextElement = context ?: return null
@@ -411,5 +415,9 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
?: throw AssertionError("Analyzing kotlin code fragment of type ${this::class.java} with java context of type ${contextElement::class.java}")
return if (contextFile is KtCodeFragment) contextFile.getContextFile() else contextFile
}
private companion object {
private val SUPPRESS_ANNOTATION_SHORT_NAME = KotlinBuiltIns.FQ_NAMES.suppress.shortName().identifier
}
}
@@ -87,7 +87,7 @@ internal class ModuleResolutionFacadeImpl(
return projectFacade.resolverForElement(element).componentProvider.tryGetService(serviceClass)
}
fun <T : Any> getFrontendService(ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T {
private fun <T : Any> getFrontendService(ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T {
return projectFacade.resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass)
}
@@ -152,22 +152,22 @@ internal class ProjectResolutionFacade(
return resolverForProject
}
fun resolverForModuleInfo(moduleInfo: IdeaModuleInfo) = cachedResolverForProject.resolverForModule(moduleInfo)
internal fun resolverForModuleInfo(moduleInfo: IdeaModuleInfo) = cachedResolverForProject.resolverForModule(moduleInfo)
fun resolverForElement(element: PsiElement): ResolverForModule {
internal fun resolverForElement(element: PsiElement): ResolverForModule {
val infos = element.getModuleInfos()
return infos.asIterable().firstNotNullResult { cachedResolverForProject.tryGetResolverForModule(it) }
?: cachedResolverForProject.tryGetResolverForModule(NotUnderContentRootModuleInfo)
?: cachedResolverForProject.diagnoseUnknownModuleInfo(infos.toList())
}
fun resolverForDescriptor(moduleDescriptor: ModuleDescriptor) = cachedResolverForProject.resolverForModuleDescriptor(moduleDescriptor)
internal fun resolverForDescriptor(moduleDescriptor: ModuleDescriptor) = cachedResolverForProject.resolverForModuleDescriptor(moduleDescriptor)
fun findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor {
internal fun findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor {
return cachedResolverForProject.descriptorForModule(ideaModuleInfo)
}
fun getAnalysisResultsForElements(elements: Collection<KtElement>): AnalysisResult {
internal fun getAnalysisResultsForElements(elements: Collection<KtElement>): AnalysisResult {
assert(elements.isNotEmpty()) { "elements collection should not be empty" }
val slruCache = synchronized(analysisResults) {
analysisResults.value!!
@@ -192,7 +192,7 @@ internal class ProjectResolutionFacade(
return "$debugString@${Integer.toHexString(hashCode())}"
}
companion object {
private companion object {
private fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns {
val supportInstance = IdePlatformSupport.platformSupport[settings.platform] ?: return DefaultBuiltIns.Instance
return supportInstance.createBuiltIns(settings, sdkContext)