Remove direct usages of ModuleDescriptor#getPackageFragmentProvider()
This commit is contained in:
@@ -135,7 +135,7 @@ public class PackageCodegen {
|
||||
}
|
||||
|
||||
// TODO rewrite it to something more robust when module system is implemented
|
||||
for (PackageFragmentDescriptor fragment : state.getModule().getPackageFragmentProvider().getPackageFragments(fqName)) {
|
||||
for (PackageFragmentDescriptor fragment : state.getModule().getPackage(fqName).getFragments()) {
|
||||
if (fragment instanceof IncrementalPackageFragmentProvider.IncrementalPackageFragment &&
|
||||
((IncrementalPackageFragmentProvider.IncrementalPackageFragment) fragment).getModuleId().equals(state.getModuleId())) {
|
||||
return fragment;
|
||||
|
||||
+1
-1
@@ -125,7 +125,7 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
|
||||
}
|
||||
|
||||
val packageStream = ByteArrayOutputStream()
|
||||
val fragments = module.getPackageFragmentProvider().getPackageFragments(fqName)
|
||||
val fragments = packageView.getFragments()
|
||||
val packageProto = serializer.packageProto(fragments).build() ?: error("Package fragments not serialized: $fragments")
|
||||
packageProto.writeTo(packageStream)
|
||||
write(destDir, BuiltInsSerializedResourcePaths.getPackageFilePath(fqName), packageStream,
|
||||
|
||||
+1
@@ -199,5 +199,6 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi
|
||||
override fun acceptVoid(visitor: DeclarationDescriptorVisitor<Void, Void>?) = throw UnsupportedOperationException()
|
||||
override fun getAnnotations() = throw UnsupportedOperationException()
|
||||
override fun getName() = throw UnsupportedOperationException()
|
||||
override fun getFragments() = throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,8 +63,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
||||
PackageFragmentDescriptor deserialized = KotlinBuiltIns.getInstance().getBuiltInsPackageFragment();
|
||||
|
||||
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(files, getEnvironment(), false);
|
||||
List<PackageFragmentDescriptor> fragments =
|
||||
module.getPackageFragmentProvider().getPackageFragments(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
List<PackageFragmentDescriptor> fragments = module.getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME).getFragments();
|
||||
for (PackageFragmentDescriptor fromLazyResolve : fragments) {
|
||||
if (fromLazyResolve instanceof LazyPackageDescriptor) {
|
||||
RecursiveDescriptorComparator.validateAndCompareDescriptors(
|
||||
|
||||
@@ -17,22 +17,18 @@
|
||||
package org.jetbrains.kotlin.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.impl.PackageViewDescriptorImpl
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap
|
||||
import org.jetbrains.kotlin.resolve.ImportPath
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
|
||||
public trait ModuleDescriptor : DeclarationDescriptor, ModuleParameters {
|
||||
public fun getPackage(fqName: FqName): PackageViewDescriptor?
|
||||
public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
|
||||
override fun getContainingDeclaration(): DeclarationDescriptor? = null
|
||||
|
||||
public fun getPackageFragmentProvider(): PackageFragmentProvider
|
||||
|
||||
public fun getPackage(fqName: FqName): PackageViewDescriptor? {
|
||||
val fragments = getPackageFragmentProvider().getPackageFragments(fqName)
|
||||
return if (!fragments.isEmpty()) PackageViewDescriptorImpl(this, fqName, fragments) else null
|
||||
}
|
||||
|
||||
public val builtIns: KotlinBuiltIns
|
||||
|
||||
public fun isFriend(other: ModuleDescriptor): Boolean
|
||||
|
||||
@@ -22,9 +22,6 @@ import org.jetbrains.kotlin.name.Name
|
||||
public trait PackageFragmentProvider {
|
||||
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||
|
||||
/**
|
||||
* @return declared subpackages of a package with the FQ name given by [fqName]
|
||||
*/
|
||||
public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PackageViewDescriptor extends DeclarationDescriptor {
|
||||
@Override
|
||||
@Nullable
|
||||
@@ -34,4 +36,7 @@ public interface PackageViewDescriptor extends DeclarationDescriptor {
|
||||
|
||||
@NotNull
|
||||
ModuleDescriptor getModule();
|
||||
|
||||
@NotNull
|
||||
List<PackageFragmentDescriptor> getFragments();
|
||||
}
|
||||
|
||||
@@ -20,7 +20,9 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import java.util.ArrayList
|
||||
@@ -89,7 +91,14 @@ public class ModuleDescriptorImpl(
|
||||
packageFragmentProviderForModuleContent = providerForModuleContent
|
||||
}
|
||||
|
||||
override fun getPackageFragmentProvider() = packageFragmentProviderForWholeModuleWithDependencies
|
||||
override fun getPackage(fqName: FqName): PackageViewDescriptor? {
|
||||
val fragments = packageFragmentProviderForWholeModuleWithDependencies.getPackageFragments(fqName)
|
||||
return if (!fragments.isEmpty()) PackageViewDescriptorImpl(this, fqName, fragments) else null
|
||||
}
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||
return packageFragmentProviderForWholeModuleWithDependencies.getSubPackagesOf(fqName, nameFilter)
|
||||
}
|
||||
|
||||
private val friendModules = LinkedHashSet<ModuleDescriptor>()
|
||||
|
||||
|
||||
+3
-1
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
public class PackageViewDescriptorImpl(
|
||||
private val module: ModuleDescriptor,
|
||||
private val fqName: FqName,
|
||||
fragments: List<PackageFragmentDescriptor>
|
||||
private val fragments: List<PackageFragmentDescriptor>
|
||||
) : DeclarationDescriptorImpl(Annotations.EMPTY, fqName.shortNameOrSpecial()), PackageViewDescriptor {
|
||||
private val memberScope: JetScope = run {
|
||||
assert(fragments.isNotEmpty()) { "$fqName in module" }
|
||||
@@ -47,6 +47,8 @@ public class PackageViewDescriptorImpl(
|
||||
|
||||
override fun getModule(): ModuleDescriptor = module
|
||||
|
||||
override fun getFragments() = fragments
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
if (!kindFilter.acceptsKinds(DescriptorKindFilter.PACKAGES_MASK)) return listOf()
|
||||
|
||||
val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter)
|
||||
val subFqNames = containingDeclaration.getModule().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter)
|
||||
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
|
||||
for (subFqName in subFqNames) {
|
||||
val shortName = subFqName.shortName()
|
||||
|
||||
+8
-13
@@ -18,26 +18,23 @@ package org.jetbrains.kotlin.idea.decompiler.textBuilder
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.idea.decompiler.navigation.JsMetaFileVirtualFileHolder
|
||||
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRendererBuilder
|
||||
import java.util.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
|
||||
import org.jetbrains.kotlin.types.error.MissingDependencyErrorClass
|
||||
import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike
|
||||
import org.jetbrains.kotlin.types.isFlexible
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors
|
||||
import org.jetbrains.kotlin.types.error.MissingDependencyErrorClass
|
||||
import org.jetbrains.kotlin.types.flexibility
|
||||
import org.jetbrains.kotlin.types.isFlexible
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
|
||||
private val FILE_ABI_VERSION_MARKER: String = "FILE_ABI"
|
||||
private val CURRENT_ABI_VERSION_MARKER: String = "CURRENT_ABI"
|
||||
@@ -85,9 +82,7 @@ public fun buildDecompiledTextFromJsMetadata(
|
||||
val packageFqName = classFile.getUserData(JsMetaFileVirtualFileHolder.PACKAGE_FQNAME_KEY)
|
||||
assert (packageFqName != null)
|
||||
|
||||
val fragments = module.getPackageFragmentProvider().getPackageFragments(packageFqName)
|
||||
val descriptors = fragments.flatMap { it.getMemberScope().getAllDescriptors() }
|
||||
|
||||
val descriptors = module.getPackage(packageFqName)?.getMemberScope()?.getAllDescriptors()?.toList().orEmpty()
|
||||
return buildDecompiledText(packageFqName, descriptors)
|
||||
}
|
||||
|
||||
|
||||
+3
-4
@@ -39,9 +39,7 @@ import org.jetbrains.kotlin.asJava.LightClassUtil;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.context.ContextPackage;
|
||||
import org.jetbrains.kotlin.context.MutableModuleContext;
|
||||
import org.jetbrains.kotlin.context.ProjectContext;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.di.InjectorForLazyResolve;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
@@ -123,8 +121,9 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
injectorForLazyResolve.getResolveSession().forceResolveAll();
|
||||
}
|
||||
|
||||
List<PackageFragmentDescriptor> fragments =
|
||||
newModuleContext.getModule().getPackageFragmentProvider().getPackageFragments(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
PackageViewDescriptor packageView = newModuleContext.getModule().getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
|
||||
assert packageView != null : "Should contain " + KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME + " package";
|
||||
List<PackageFragmentDescriptor> fragments = packageView.getFragments();
|
||||
|
||||
BuiltInsReferenceResolver.this.moduleDescriptor = newModuleContext.getModule();
|
||||
builtinsPackageFragment = KotlinPackage.single(fragments);
|
||||
|
||||
+2
-4
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||
@@ -71,9 +70,8 @@ class AllClassesCompletion(val parameters: CompletionParameters,
|
||||
}
|
||||
|
||||
private val allClassDescriptors = CachedValuesManager.getManager(scope.getProject()).createCachedValue( {
|
||||
val provider = (moduleDescriptor as ModuleDescriptorImpl).getPackageFragmentProvider()
|
||||
val fragments = DescriptorUtils.getPackagesFqNames(moduleDescriptor).flatMap { provider.getPackageFragments(it) }
|
||||
val classDescriptors = fragments.flatMap { it.getMemberScope().getAllDescriptors().filter { it is ClassDescriptor} }.map { it as ClassDescriptor }
|
||||
val packages = DescriptorUtils.getPackagesFqNames(moduleDescriptor).map { moduleDescriptor.getPackage(it) }.filterNotNull()
|
||||
val classDescriptors = packages.flatMap { it.getMemberScope().getAllDescriptors().filterIsInstance<ClassDescriptor>() }
|
||||
CachedValueProvider.Result(classDescriptors, ProjectRootModificationTracker.getInstance(scope.getProject()))
|
||||
}, false)
|
||||
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ public object KotlinJavascriptSerializationUtil {
|
||||
}, skip)
|
||||
|
||||
val packageStream = ByteArrayOutputStream()
|
||||
val fragments = module.getPackageFragmentProvider().getPackageFragments(fqName)
|
||||
val fragments = packageView.getFragments()
|
||||
val packageProto = serializer.packageProto(fragments, skip).build() ?: error("Package fragments not serialized: $fragments")
|
||||
if (packageProto.getMemberCount() > 0) {
|
||||
packageProto.writeTo(packageStream)
|
||||
|
||||
Reference in New Issue
Block a user