Move PlatformToKotlinClassMap out from ModuleParameters

Configure it in the same way as other platform-specific components instead,
simplify some code
This commit is contained in:
Alexander Udalov
2016-09-24 17:37:23 +03:00
parent b77388bd48
commit 7070b88ea4
8 changed files with 7 additions and 49 deletions
@@ -19,8 +19,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.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.resolve.PlatformConfigurator
@@ -31,8 +29,6 @@ import java.util.*
object JvmPlatform : TargetPlatform("JVM") {
override val defaultModuleParameters = object : ModuleParameters {
override val platformToKotlinClassMap: PlatformToKotlinClassMap
get() = JavaToKotlinClassMap.INSTANCE
override val defaultImports: List<ImportPath>
get() = DEFAULT_IMPORTS_FOR_JVM
override val excludedImports: List<FqName>
@@ -23,7 +23,6 @@ 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.platform.PlatformToKotlinClassMap
import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.createModule
import org.jetbrains.kotlin.storage.ExceptionTracker
@@ -41,9 +40,6 @@ interface ProjectContext : GlobalContext {
interface ModuleContext : ProjectContext {
val module: ModuleDescriptor
val platformToKotlinClassMap: PlatformToKotlinClassMap
get() = module.platformToKotlinClassMap
}
interface MutableModuleContext: ModuleContext {
@@ -40,7 +40,6 @@ fun StorageComponentContainer.configureModule(
useInstance(moduleContext.project)
useInstance(moduleContext.storageManager)
useInstance(moduleContext.module.builtIns)
useInstance(moduleContext.platformToKotlinClassMap)
useInstance(platform)
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava
import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver
import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.platform.JvmBuiltIns
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
@@ -46,8 +45,9 @@ class RuntimeModuleData private constructor(val deserialization: Deserialization
fun create(classLoader: ClassLoader): RuntimeModuleData {
val storageManager = LockBasedStorageManager()
val builtIns = JvmBuiltIns(storageManager)
val module = ModuleDescriptorImpl(Name.special("<runtime module for $classLoader>"), storageManager,
ModuleParameters(emptyList(), emptyList(), JavaToKotlinClassMap.INSTANCE), builtIns)
val module = ModuleDescriptorImpl(
Name.special("<runtime module for $classLoader>"), storageManager, ModuleParameters.Empty, builtIns
)
val reflectKotlinClassFinder = ReflectKotlinClassFinder(classLoader)
val deserializedDescriptorResolver = DeserializedDescriptorResolver(RuntimeErrorReporter)
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.descriptors
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
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
@@ -50,17 +49,8 @@ interface ModuleDescriptor : DeclarationDescriptor, ModuleParameters {
interface ModuleParameters {
val defaultImports: List<ImportPath>
val excludedImports: List<FqName> get() = emptyList()
val platformToKotlinClassMap: PlatformToKotlinClassMap
object Empty: ModuleParameters {
object Empty : ModuleParameters {
override val defaultImports: List<ImportPath> = emptyList()
override val platformToKotlinClassMap: PlatformToKotlinClassMap = PlatformToKotlinClassMap.EMPTY
}
}
fun ModuleParameters(defaultImports: List<ImportPath>, excludedImports: List<FqName>, platformToKotlinClassMap: PlatformToKotlinClassMap): ModuleParameters =
object : ModuleParameters {
override val defaultImports: List<ImportPath> = defaultImports
override val excludedImports: List<FqName> get() = excludedImports
override val platformToKotlinClassMap: PlatformToKotlinClassMap = platformToKotlinClassMap
}
@@ -23,14 +23,13 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl;
import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl;
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl;
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl;
import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl;
import org.jetbrains.kotlin.incremental.components.LookupLocation;
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.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
@@ -57,12 +56,6 @@ public class ErrorUtils {
return null;
}
@NotNull
@Override
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
throw new IllegalStateException("Should not be called!");
}
@NotNull
@Override
public List<ImportPath> getDefaultImports() {
@@ -46,8 +46,6 @@ import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl;
import org.jetbrains.kotlin.context.ContextKt;
import org.jetbrains.kotlin.context.MutableModuleContext;
import org.jetbrains.kotlin.descriptors.CallableDescriptor;
import org.jetbrains.kotlin.descriptors.ModuleDescriptorKt;
import org.jetbrains.kotlin.descriptors.ModuleParameters;
import org.jetbrains.kotlin.frontend.di.InjectionKt;
import org.jetbrains.kotlin.idea.stubindex.*;
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil;
@@ -56,7 +54,6 @@ import org.jetbrains.kotlin.name.ClassId;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap;
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.BindingTraceContext;
import org.jetbrains.kotlin.resolve.TargetPlatform;
@@ -239,17 +236,8 @@ public class SourceNavigationHelper {
@NotNull Collection<KtNamedDeclaration> candidates,
@NotNull Project project
) {
TargetPlatform platform = TargetPlatform.Default.INSTANCE;
ModuleParameters defaultJvmModuleParameters = JvmPlatform.INSTANCE.getDefaultModuleParameters();
MutableModuleContext newModuleContext = ContextKt.ContextForNewModule(
project, Name.special("<library module>"),
ModuleDescriptorKt.ModuleParameters(
defaultJvmModuleParameters.getDefaultImports(),
defaultJvmModuleParameters.getExcludedImports(),
PlatformToKotlinClassMap.EMPTY
),
DefaultBuiltIns.getInstance()
project, Name.special("<library module>"), JvmPlatform.INSTANCE.getDefaultModuleParameters(), DefaultBuiltIns.getInstance()
);
newModuleContext.setDependencies(newModuleContext.getModule(), newModuleContext.getModule().getBuiltIns().getBuiltInsModule());
@@ -263,7 +251,7 @@ public class SourceNavigationHelper {
newModuleContext,
providerFactory,
new BindingTraceContext(),
platform,
TargetPlatform.Default.INSTANCE,
LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410
);
@@ -20,7 +20,6 @@ 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.platform.PlatformToKotlinClassMap
import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.TargetPlatform
@@ -37,9 +36,6 @@ object JsPlatform : TargetPlatform("JS") {
ImportPath("kotlin.text.*"),
ImportPath("kotlin.js.*")
)
override val platformToKotlinClassMap: PlatformToKotlinClassMap
get() = PlatformToKotlinClassMap.EMPTY
}
override val platformConfigurator: PlatformConfigurator = JsPlatformConfigurator