diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt index 2eeac2c1054..b800d8deeee 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt @@ -17,8 +17,6 @@ package org.jetbrains.kotlin.resolve.jvm.platform import org.jetbrains.kotlin.builtins.DefaultBuiltIns -import org.jetbrains.kotlin.descriptors.ModuleParameters -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.PlatformConfigurator @@ -28,34 +26,31 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import java.util.* object JvmPlatform : TargetPlatform("JVM") { - override val defaultModuleParameters = object : ModuleParameters { - override val defaultImports: List - get() = DEFAULT_IMPORTS_FOR_JVM - } + override val defaultImports: List + get() = ArrayList().apply { + add(ImportPath("java.lang.*")) + add(ImportPath("kotlin.*")) + add(ImportPath("kotlin.annotation.*")) + add(ImportPath("kotlin.jvm.*")) + add(ImportPath("kotlin.collections.*")) + add(ImportPath("kotlin.coroutines.*")) + add(ImportPath("kotlin.ranges.*")) + add(ImportPath("kotlin.sequences.*")) + add(ImportPath("kotlin.text.*")) + add(ImportPath("kotlin.io.*")) + + fun addAllClassifiersFromScope(scope: MemberScope) { + for (descriptor in scope.getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS, MemberScope.ALL_NAME_FILTER)) { + add(ImportPath(DescriptorUtils.getFqNameSafe(descriptor), false)) + } + } + + val builtIns = DefaultBuiltIns.Instance + for (builtinPackageFragment in builtIns.builtInsPackageFragments) { + addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) + } + } + override val platformConfigurator: PlatformConfigurator = JvmPlatformConfigurator } - -private val DEFAULT_IMPORTS_FOR_JVM: List = ArrayList().apply { - add(ImportPath("java.lang.*")) - add(ImportPath("kotlin.*")) - add(ImportPath("kotlin.annotation.*")) - add(ImportPath("kotlin.jvm.*")) - add(ImportPath("kotlin.collections.*")) - add(ImportPath("kotlin.coroutines.*")) - add(ImportPath("kotlin.ranges.*")) - add(ImportPath("kotlin.sequences.*")) - add(ImportPath("kotlin.text.*")) - add(ImportPath("kotlin.io.*")) - - fun addAllClassifiersFromScope(scope: MemberScope) { - for (descriptor in scope.getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS, MemberScope.ALL_NAME_FILTER)) { - add(ImportPath(DescriptorUtils.getFqNameSafe(descriptor), false)) - } - } - - val builtIns = DefaultBuiltIns.Instance - for (builtinPackageFragment in builtIns.builtInsPackageFragments) { - addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) - } -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt index 1152bf28735..f5b054bd6b4 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt @@ -19,10 +19,10 @@ package org.jetbrains.kotlin.context import com.intellij.openapi.project.Project 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.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.createModule import org.jetbrains.kotlin.storage.ExceptionTracker @@ -100,11 +100,11 @@ fun ProjectContext.withModule(module: ModuleDescriptor): ModuleContext = ModuleC fun ContextForNewModule( project: Project, moduleName: Name, - parameters: ModuleParameters, + defaultImports: List, builtIns: KotlinBuiltIns ): MutableModuleContext { val projectContext = ProjectContext(project) - val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, parameters, builtIns) + val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, defaultImports, builtIns) return MutableModuleContextImpl(module, projectContext) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt index b892437ac48..8bbf1a6c6d3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.container.StorageComponentContainer import org.jetbrains.kotlin.container.composeContainer import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap @@ -33,18 +32,14 @@ import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.DynamicTypesSettings -abstract class TargetPlatform( - val platformName: String -) { - override fun toString(): String { - return platformName - } +abstract class TargetPlatform(val platformName: String) { + override fun toString() = platformName abstract val platformConfigurator: PlatformConfigurator - abstract val defaultModuleParameters: ModuleParameters + abstract val defaultImports: List object Default : TargetPlatform("Default") { - override val defaultModuleParameters = ModuleParameters.Empty + override val defaultImports = emptyList() override val platformConfigurator = object : PlatformConfigurator(DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(), IdentifierChecker.DEFAULT, OverloadFilter.DEFAULT, PlatformToKotlinClassMap.EMPTY) { @@ -115,7 +110,7 @@ fun TargetPlatform.createModule( storageManager: StorageManager, builtIns: KotlinBuiltIns, capabilities: Map, Any?> = emptyMap() -) = ModuleDescriptorImpl(name, storageManager, defaultModuleParameters, builtIns, capabilities) +) = ModuleDescriptorImpl(name, storageManager, defaultImports, builtIns, capabilities) fun createContainer(id: String, platform: TargetPlatform, init: StorageComponentContainer.() -> Unit) diff --git a/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java index 2ad50cbb5a8..e4d5d104ac5 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -961,9 +961,7 @@ public class KotlinTestUtils { @NotNull public static ModuleDescriptorImpl createEmptyModule(@NotNull String name, @NotNull TargetPlatform platform, KotlinBuiltIns builtIns) { - return new ModuleDescriptorImpl( - Name.special(name), LockBasedStorageManager.NO_LOCKS, platform.getDefaultModuleParameters(), builtIns - ); + return new ModuleDescriptorImpl(Name.special(name), LockBasedStorageManager.NO_LOCKS, platform.getDefaultImports(), builtIns); } @NotNull diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java index 1f5e65d3c8f..7fc7fef0042 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.builtins.functions.BuiltInFictitiousFunctionClassFac import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.descriptors.ModuleParameters; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentProvider; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; @@ -38,6 +37,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRendererModifier; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy; +import org.jetbrains.kotlin.resolve.ImportPath; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtilsKt; import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor; import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider; @@ -51,6 +51,7 @@ import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator; import java.io.File; import java.io.InputStream; +import java.util.Collections; import java.util.List; import java.util.regex.Pattern; @@ -109,7 +110,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment { private static PackageFragmentProvider createBuiltInsPackageFragmentProvider() { LockBasedStorageManager storageManager = new LockBasedStorageManager(); ModuleDescriptorImpl builtInsModule = new ModuleDescriptorImpl( - KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, ModuleParameters.Empty.INSTANCE, DefaultBuiltIns.getInstance() + KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, Collections.emptyList(), DefaultBuiltIns.getInstance() ); PackageFragmentProvider packageFragmentProvider = createBuiltInPackageFragmentProvider( diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimeModuleData.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimeModuleData.kt index c00e7d6f1e8..3ccd4734ccd 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimeModuleData.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimeModuleData.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.load.kotlin.reflect import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.SupertypeLoopChecker import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupTracker @@ -46,9 +45,7 @@ class RuntimeModuleData private constructor(val deserialization: Deserialization fun create(classLoader: ClassLoader): RuntimeModuleData { val storageManager = LockBasedStorageManager() val builtIns = JvmBuiltIns(storageManager) - val module = ModuleDescriptorImpl( - Name.special(""), storageManager, ModuleParameters.Empty, builtIns - ) + val module = ModuleDescriptorImpl(Name.special(""), storageManager, emptyList(), builtIns) val reflectKotlinClassFinder = ReflectKotlinClassFinder(classLoader) val deserializedDescriptorResolver = DeserializedDescriptorResolver(RuntimeErrorReporter) diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index 58c976d31d4..5bba7b95063 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.DescriptorUtils; +import org.jetbrains.kotlin.resolve.ImportPath; import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider; import org.jetbrains.kotlin.serialization.deserialization.PlatformDependentDeclarationFilter; @@ -81,9 +82,7 @@ public abstract class KotlinBuiltIns { protected KotlinBuiltIns(@NotNull StorageManager storageManager) { this.storageManager = storageManager; - builtInsModule = new ModuleDescriptorImpl( - BUILTINS_MODULE_NAME, storageManager, ModuleParameters.Empty.INSTANCE, this - ); + builtInsModule = new ModuleDescriptorImpl(BUILTINS_MODULE_NAME, storageManager, Collections.emptyList(), this); PackageFragmentProvider packageFragmentProvider = BuiltInsPackageFragmentProviderKt.createBuiltInPackageFragmentProvider( storageManager, builtInsModule, BUILT_INS_PACKAGE_FQ_NAMES, diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt index e93c38e100b..d1cf3ab9989 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.types.TypeSubstitutor -interface ModuleDescriptor : DeclarationDescriptor, ModuleParameters { +interface ModuleDescriptor : DeclarationDescriptor { override fun getContainingDeclaration(): DeclarationDescriptor? = null val builtIns: KotlinBuiltIns @@ -41,17 +41,11 @@ interface ModuleDescriptor : DeclarationDescriptor, ModuleParameters { fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection + val defaultImports: List + + val effectivelyExcludedImports: List + fun getCapability(capability: Capability): T? class Capability(val name: String) - - val effectivelyExcludedImports: List -} - -interface ModuleParameters { - val defaultImports: List - - object Empty : ModuleParameters { - override val defaultImports: List = emptyList() - } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt index 3736e0726ed..09facc31c64 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt @@ -17,12 +17,16 @@ package org.jetbrains.kotlin.descriptors.impl import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider +import org.jetbrains.kotlin.descriptors.PackageViewDescriptor +import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.isChildOf import org.jetbrains.kotlin.name.isSubpackageOf +import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.storage.StorageManager @@ -34,10 +38,10 @@ import java.lang.IllegalArgumentException class ModuleDescriptorImpl @JvmOverloads constructor( moduleName: Name, private val storageManager: StorageManager, - private val moduleParameters: ModuleParameters, + override val defaultImports: List, override val builtIns: KotlinBuiltIns, private val capabilities: Map, Any?> = emptyMap() -) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor, ModuleParameters by moduleParameters { +) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor { init { if (!moduleName.isSpecial) { throw IllegalArgumentException("Module name must be special: $moduleName") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java index 124090c2ea2..2e4f366db0e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java @@ -237,7 +237,7 @@ public class SourceNavigationHelper { @NotNull Project project ) { MutableModuleContext newModuleContext = ContextKt.ContextForNewModule( - project, Name.special(""), JvmPlatform.INSTANCE.getDefaultModuleParameters(), DefaultBuiltIns.getInstance() + project, Name.special(""), JvmPlatform.INSTANCE.getDefaultImports(), DefaultBuiltIns.getInstance() ); newModuleContext.setDependencies(newModuleContext.getModule(), newModuleContext.getModule().getBuiltIns().getBuiltInsModule()); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt index 18ead62280f..56fde52f2ea 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.decompiler.textBuilder import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl @@ -61,7 +60,7 @@ abstract class DeserializerForDecompilerBase( protected fun createDummyPackageFragment(fqName: FqName): MutablePackageFragmentDescriptor = MutablePackageFragmentDescriptor(moduleDescriptor, fqName) - private fun createDummyModule(name: String) = ModuleDescriptorImpl(Name.special("<$name>"), storageManager, ModuleParameters.Empty, builtIns) + private fun createDummyModule(name: String) = ModuleDescriptorImpl(Name.special("<$name>"), storageManager, emptyList(), builtIns) init { moduleDescriptor.initialize(packageFragmentProvider) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/importConversion.kt b/j2k/src/org/jetbrains/kotlin/j2k/importConversion.kt index 9b41991b090..ff065dbc8ba 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/importConversion.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/importConversion.kt @@ -156,7 +156,7 @@ private fun convertNonStaticImport(fqName: FqName, isOnDemand: Boolean, target: private fun renderImportName(fqName: FqName, isOnDemand: Boolean) = if (isOnDemand) fqName.render() + ".*" else fqName.render() -private val DEFAULT_IMPORTS_SET: Set = JvmPlatform.defaultModuleParameters.defaultImports +private val DEFAULT_IMPORTS_SET: Set = JvmPlatform.defaultImports .filter { it.isAllUnder } .map { it.fqnPart() } .toSet() diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt index d8bd0eacfb6..343f6d6d647 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt @@ -19,27 +19,24 @@ package org.jetbrains.kotlin.js.resolve import com.google.common.collect.ImmutableList import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.PlatformConfigurator import org.jetbrains.kotlin.resolve.TargetPlatform object JsPlatform : TargetPlatform("JS") { - override val defaultModuleParameters = object : ModuleParameters { - override val defaultImports: List = ImmutableList.of( - ImportPath("java.lang.*"), - ImportPath("kotlin.*"), - ImportPath("kotlin.annotation.*"), - ImportPath("kotlin.collections.*"), - ImportPath("kotlin.ranges.*"), - ImportPath("kotlin.sequences.*"), - ImportPath("kotlin.text.*"), - ImportPath("kotlin.js.*") - ) - } + override val defaultImports: List = ImmutableList.of( + ImportPath("java.lang.*"), + ImportPath("kotlin.*"), + ImportPath("kotlin.annotation.*"), + ImportPath("kotlin.collections.*"), + ImportPath("kotlin.ranges.*"), + ImportPath("kotlin.sequences.*"), + ImportPath("kotlin.text.*"), + ImportPath("kotlin.js.*") + ) override val platformConfigurator: PlatformConfigurator = JsPlatformConfigurator val builtIns: KotlinBuiltIns get() = DefaultBuiltIns.Instance -} \ No newline at end of file +}