From c091bb990bf930884e7d91a2287ee77fe455d4a3 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 5 Apr 2016 20:56:12 +0300 Subject: [PATCH] Make LazyJavaPackageFragment#javaScope private --- .../java/lazy/LazyJavaPackageFragmentProvider.kt | 4 ++-- .../lazy/descriptors/LazyJavaPackageFragment.kt | 15 ++++++++++++++- .../java/lazy/descriptors/LazyJavaPackageScope.kt | 13 ++----------- .../lazy/descriptors/LazyJavaStaticClassScope.kt | 3 --- .../java/lazy/descriptors/LazyJavaStaticScope.kt | 4 ---- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt index dbbf9368067..921ea7490a0 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -52,7 +52,7 @@ class LazyJavaPackageFragmentProvider( override fun getPackageFragments(fqName: FqName) = emptyOrSingletonList(getPackageFragment(fqName)) override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = - getPackageFragment(fqName)?.javaScope?.getSubPackages().orEmpty() + getPackageFragment(fqName)?.getSubPackageFqNames().orEmpty() fun getClass(javaClass: JavaClass): ClassDescriptor? = c.javaClassResolver.resolveClass(javaClass) @@ -70,7 +70,7 @@ class LazyJavaPackageFragmentProvider( if (fqName == null) return null - return getPackageFragment(fqName.parent())?.javaScope?.findClassifierByJavaClass(javaClass, NoLookupLocation.FROM_JAVA_LOADER) + return getPackageFragment(fqName.parent())?.findClassifierByJavaClass(javaClass) } } } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt index 0fef0d26aed..61198e6915a 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt @@ -16,13 +16,16 @@ package org.jetbrains.kotlin.load.java.lazy.descriptors +import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext +import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaPackage import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryPackageSourceElement import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter @@ -39,7 +42,7 @@ class LazyJavaPackageFragment( }.toMap() } - internal val javaScope by c.storageManager.createLazyValue { + private val javaScope by c.storageManager.createLazyValue { LazyJavaPackageScope(c, jPackage, this) } @@ -51,6 +54,16 @@ class LazyJavaPackageFragment( })) } + private val subPackages = c.storageManager.createRecursionTolerantLazyValue( + { jPackage.subPackages.map(JavaPackage::fqName) }, + // This breaks infinite recursion between loading Java descriptors and building light classes + onRecursiveCall = listOf() + ) + + internal fun getSubPackageFqNames(): List = subPackages() + + internal fun findClassifierByJavaClass(jClass: JavaClass): ClassDescriptor? = javaScope.findClassifierByJavaClass(jClass) + private val partToFacade by c.storageManager.createLazyValue { val result = hashMapOf() kotlinClasses@for ((partName, kotlinClass) in binaryClasses) { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt index 04101801a9c..928688aeeae 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt @@ -118,7 +118,8 @@ class LazyJavaPackageScope( return classes(FindClassRequest(name, javaClass)) } - fun findClassifierByJavaClass(javaClass: JavaClass, location: LookupLocation) = findClassifier(javaClass.name, javaClass, location) + internal fun findClassifierByJavaClass(javaClass: JavaClass) = + findClassifier(javaClass.name, javaClass, NoLookupLocation.FROM_JAVA_LOADER) override fun getContributedVariables(name: Name, location: LookupLocation): Collection = emptyList() @@ -143,22 +144,12 @@ class LazyJavaPackageScope( return super.getFunctionNames(kindFilter, nameFilter) } - private val subPackages = c.storageManager.createRecursionTolerantLazyValue( - { - jPackage.subPackages.map { sp -> sp.fqName } - }, - // This breaks infinite recursion between loading Java descriptors and building light classes - onRecursiveCall = listOf() - ) - override fun computeNonDeclaredFunctions(result: MutableCollection, name: Name) { c.components.samConversionResolver.resolveSamConstructor(ownerDescriptor) { getContributedClassifier(name, NoLookupLocation.FOR_ALREADY_TRACKED) }?.let { result.add(it) } } - override fun getSubPackages() = subPackages() - override fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = listOf() // we don't use implementation from super which caches all descriptors and does not use filters diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt index 8622c8d30e0..ef48cfe0d7e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.load.java.components.DescriptorResolverUtils.resolve import org.jetbrains.kotlin.load.java.descriptors.getParentJavaStaticClassScope import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.structure.JavaClass -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.DescriptorFactory.createEnumValueOfMethod import org.jetbrains.kotlin.resolve.DescriptorFactory.createEnumValuesMethod @@ -69,8 +68,6 @@ class LazyJavaStaticClassScope( return null } - override fun getSubPackages(): Collection = listOf() - override fun computeNonDeclaredFunctions(result: MutableCollection, name: Name) { c.components.samConversionResolver.resolveSamConstructor(ownerDescriptor) { ownerDescriptor.unsubstitutedInnerClassesScope.getContributedClassifier(name, NoLookupLocation.FOR_ALREADY_TRACKED) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt index d34ab196ac8..bacab2f9e12 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -21,16 +21,12 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.structure.JavaMethod -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.KotlinType abstract class LazyJavaStaticScope(c: LazyJavaResolverContext) : LazyJavaScope(c) { - override fun getDispatchReceiverParameter() = null - abstract fun getSubPackages(): Collection - override fun resolveMethodSignature( method: JavaMethod, methodTypeParameters: List, returnType: KotlinType, valueParameters: List