Parametrize module creation by platform with built-ins
This commit is contained in:
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
|||||||
import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor;
|
import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns;
|
||||||
import org.jetbrains.kotlin.resolve.FunctionTypeResolveUtilsKt;
|
import org.jetbrains.kotlin.resolve.FunctionTypeResolveUtilsKt;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatformKt;
|
import org.jetbrains.kotlin.resolve.TargetPlatformKt;
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
|
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
|
||||||
@@ -43,8 +44,8 @@ public class JvmRuntimeTypes {
|
|||||||
ModuleDescriptorImpl module = TargetPlatformKt.createModule(
|
ModuleDescriptorImpl module = TargetPlatformKt.createModule(
|
||||||
JvmPlatform.INSTANCE,
|
JvmPlatform.INSTANCE,
|
||||||
Name.special("<jvm functions impl>"),
|
Name.special("<jvm functions impl>"),
|
||||||
LockBasedStorageManager.NO_LOCKS
|
LockBasedStorageManager.NO_LOCKS,
|
||||||
);
|
JvmBuiltIns.getInstance());
|
||||||
PackageFragmentDescriptor kotlinJvmInternal = new MutablePackageFragmentDescriptor(module, new FqName("kotlin.jvm.internal"));
|
PackageFragmentDescriptor kotlinJvmInternal = new MutablePackageFragmentDescriptor(module, new FqName("kotlin.jvm.internal"));
|
||||||
|
|
||||||
this.lambda = createClass(kotlinJvmInternal, "Lambda");
|
this.lambda = createClass(kotlinJvmInternal, "Lambda");
|
||||||
|
|||||||
+2
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
|
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
||||||
@@ -92,6 +93,7 @@ class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
|
|||||||
{ ModuleContent(files, GlobalSearchScope.EMPTY_SCOPE) },
|
{ ModuleContent(files, GlobalSearchScope.EMPTY_SCOPE) },
|
||||||
JvmPlatformParameters { throw IllegalStateException() },
|
JvmPlatformParameters { throw IllegalStateException() },
|
||||||
CompilerEnvironment,
|
CompilerEnvironment,
|
||||||
|
builtIns = JvmBuiltIns.Instance,
|
||||||
packagePartProviderFactory = { module, content -> JvmPackagePartProvider(environment) }
|
packagePartProviderFactory = { module, content -> JvmPackagePartProvider(environment) }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.modules.Module;
|
|||||||
import org.jetbrains.kotlin.modules.TargetId;
|
import org.jetbrains.kotlin.modules.TargetId;
|
||||||
import org.jetbrains.kotlin.modules.TargetIdKt;
|
import org.jetbrains.kotlin.modules.TargetIdKt;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||||
@@ -161,7 +162,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) {
|
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) {
|
||||||
MutableModuleContext context = ContextKt.ContextForNewModule(
|
MutableModuleContext context = ContextKt.ContextForNewModule(
|
||||||
project, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE
|
project, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE, JvmBuiltIns.getInstance()
|
||||||
);
|
);
|
||||||
context.setDependencies(context.getModule(), context.getBuiltIns().getBuiltInsModule());
|
context.setDependencies(context.getModule(), context.getBuiltIns().getBuiltInsModule());
|
||||||
return context;
|
return context;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.analyzer
|
package org.jetbrains.kotlin.analyzer
|
||||||
|
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
@@ -152,6 +153,7 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
|
|||||||
modulesContent: (M) -> ModuleContent,
|
modulesContent: (M) -> ModuleContent,
|
||||||
platformParameters: P,
|
platformParameters: P,
|
||||||
targetEnvironment: TargetEnvironment,
|
targetEnvironment: TargetEnvironment,
|
||||||
|
builtIns: KotlinBuiltIns,
|
||||||
delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
|
delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
|
||||||
packagePartProviderFactory: (M, ModuleContent) -> PackagePartProvider = { module, content -> PackagePartProvider.EMPTY }
|
packagePartProviderFactory: (M, ModuleContent) -> PackagePartProvider = { module, content -> PackagePartProvider.EMPTY }
|
||||||
): ResolverForProject<M> {
|
): ResolverForProject<M> {
|
||||||
@@ -160,7 +162,8 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
|
|||||||
val descriptorByModule = HashMap<M, ModuleDescriptorImpl>()
|
val descriptorByModule = HashMap<M, ModuleDescriptorImpl>()
|
||||||
modules.forEach {
|
modules.forEach {
|
||||||
module ->
|
module ->
|
||||||
descriptorByModule[module] = targetPlatform.createModule(module.name, storageManager, module.capabilities)
|
descriptorByModule[module] =
|
||||||
|
targetPlatform.createModule(module.name, storageManager, builtIns, module.capabilities)
|
||||||
}
|
}
|
||||||
return ResolverForProjectImpl(debugName, descriptorByModule, delegateResolver)
|
return ResolverForProjectImpl(debugName, descriptorByModule, delegateResolver)
|
||||||
}
|
}
|
||||||
@@ -172,9 +175,8 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
|
|||||||
dependencyInfo ->
|
dependencyInfo ->
|
||||||
resolverForProject.descriptorForModule(dependencyInfo as M)
|
resolverForProject.descriptorForModule(dependencyInfo as M)
|
||||||
}
|
}
|
||||||
|
module.dependencyOnBuiltIns().adjustDependencies(
|
||||||
val builtinsModule = targetPlatform.builtIns.builtInsModule
|
resolverForProject.descriptorForModule(module).builtIns.builtInsModule, dependenciesDescriptors)
|
||||||
module.dependencyOnBuiltIns().adjustDependencies(builtinsModule, dependenciesDescriptors)
|
|
||||||
return dependenciesDescriptors
|
return dependenciesDescriptors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,10 +118,11 @@ fun ContextForNewModule(
|
|||||||
fun ContextForNewModule(
|
fun ContextForNewModule(
|
||||||
project: Project,
|
project: Project,
|
||||||
moduleName: Name,
|
moduleName: Name,
|
||||||
targetPlatform: TargetPlatform
|
targetPlatform: TargetPlatform,
|
||||||
|
builtIns: KotlinBuiltIns
|
||||||
): MutableModuleContext {
|
): MutableModuleContext {
|
||||||
val projectContext = ProjectContext(project)
|
val projectContext = ProjectContext(project)
|
||||||
val module = targetPlatform.createModule(moduleName, projectContext.storageManager)
|
val module = targetPlatform.createModule(moduleName, projectContext.storageManager, builtIns)
|
||||||
return MutableModuleContextImpl(module, projectContext)
|
return MutableModuleContextImpl(module, projectContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ abstract class PlatformConfigurator(
|
|||||||
fun TargetPlatform.createModule(
|
fun TargetPlatform.createModule(
|
||||||
name: Name,
|
name: Name,
|
||||||
storageManager: StorageManager,
|
storageManager: StorageManager,
|
||||||
|
builtIns: KotlinBuiltIns,
|
||||||
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap()
|
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap()
|
||||||
) = ModuleDescriptorImpl(name, storageManager, defaultModuleParameters, builtIns, capabilities)
|
) = ModuleDescriptorImpl(name, storageManager, defaultModuleParameters, builtIns, capabilities)
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
|||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
|
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
|
||||||
@@ -40,7 +41,8 @@ fun createResolveSessionForFiles(
|
|||||||
projectContext, listOf(testModule),
|
projectContext, listOf(testModule),
|
||||||
{ ModuleContent(syntheticFiles, GlobalSearchScope.allScope(project)) },
|
{ ModuleContent(syntheticFiles, GlobalSearchScope.allScope(project)) },
|
||||||
JvmPlatformParameters { testModule },
|
JvmPlatformParameters { testModule },
|
||||||
CompilerEnvironment
|
CompilerEnvironment,
|
||||||
|
JvmBuiltIns.Instance
|
||||||
)
|
)
|
||||||
return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>()
|
return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.annotations.TestOnly;
|
import org.jetbrains.annotations.TestOnly;
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
|
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
|
||||||
@@ -63,6 +64,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages;
|
|||||||
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns;
|
||||||
import org.jetbrains.kotlin.psi.KtExpression;
|
import org.jetbrains.kotlin.psi.KtExpression;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
||||||
@@ -933,13 +935,13 @@ public class KotlinTestUtils {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ModuleDescriptorImpl createEmptyModule(@NotNull String name) {
|
public static ModuleDescriptorImpl createEmptyModule(@NotNull String name) {
|
||||||
return createEmptyModule(name, JvmPlatform.INSTANCE);
|
return createEmptyModule(name, JvmPlatform.INSTANCE, JvmBuiltIns.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ModuleDescriptorImpl createEmptyModule(@NotNull String name, @NotNull TargetPlatform platform) {
|
public static ModuleDescriptorImpl createEmptyModule(@NotNull String name, @NotNull TargetPlatform platform, KotlinBuiltIns builtIns) {
|
||||||
return new ModuleDescriptorImpl(
|
return new ModuleDescriptorImpl(
|
||||||
Name.special(name), LockBasedStorageManager.NO_LOCKS, platform.getDefaultModuleParameters(), platform.getBuiltIns()
|
Name.special(name), LockBasedStorageManager.NO_LOCKS, platform.getDefaultModuleParameters(), builtIns
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,11 +38,15 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
|||||||
import org.jetbrains.kotlin.diagnostics.*;
|
import org.jetbrains.kotlin.diagnostics.*;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns;
|
||||||
import org.jetbrains.kotlin.psi.Call;
|
import org.jetbrains.kotlin.psi.Call;
|
||||||
import org.jetbrains.kotlin.psi.KtElement;
|
import org.jetbrains.kotlin.psi.KtElement;
|
||||||
import org.jetbrains.kotlin.psi.KtExpression;
|
import org.jetbrains.kotlin.psi.KtExpression;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
import org.jetbrains.kotlin.resolve.*;
|
import org.jetbrains.kotlin.resolve.AnalyzingUtils;
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||||
|
import org.jetbrains.kotlin.resolve.TargetPlatformKt;
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall;
|
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall;
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
|
||||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
|
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
|
||||||
@@ -351,7 +355,7 @@ public abstract class AbstractDiagnosticsTest extends BaseDiagnosticsTest {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
|
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
|
||||||
return TargetPlatformKt.createModule(JvmPlatform.INSTANCE, Name.special(moduleName), storageManager);
|
return TargetPlatformKt.createModule(JvmPlatform.INSTANCE, Name.special(moduleName), storageManager, JvmBuiltIns.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+2
-1
@@ -72,7 +72,8 @@ public abstract class AbstractDiagnosticsTestWithJsStdLib extends AbstractDiagno
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
|
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
|
||||||
return TargetPlatformKt.createModule(JsPlatform.INSTANCE, Name.special(moduleName), storageManager);
|
return TargetPlatformKt.createModule(
|
||||||
|
JsPlatform.INSTANCE, Name.special(moduleName), storageManager, JsPlatform.INSTANCE.getBuiltIns());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
@@ -69,6 +70,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
|||||||
modules.first { it._name == moduleName }
|
modules.first { it._name == moduleName }
|
||||||
},
|
},
|
||||||
CompilerEnvironment,
|
CompilerEnvironment,
|
||||||
|
JvmBuiltIns.Instance,
|
||||||
packagePartProviderFactory = { a, b -> JvmPackagePartProvider(environment) }
|
packagePartProviderFactory = { a, b -> JvmPackagePartProvider(environment) }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.builtins
|
package org.jetbrains.kotlin.serialization.builtins
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.createBuiltInPackageFragmentProvider
|
import org.jetbrains.kotlin.builtins.createBuiltInPackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||||
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
|
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
|
||||||
@@ -39,7 +40,7 @@ class BuiltInsSerializerTest : TestCaseWithTmpdir() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val platform = TargetPlatform.Default
|
val platform = TargetPlatform.Default
|
||||||
val module = KotlinTestUtils.createEmptyModule("<module>", platform)
|
val module = KotlinTestUtils.createEmptyModule("<module>", platform, DefaultBuiltIns.Instance)
|
||||||
|
|
||||||
val packageFragmentProvider = createBuiltInPackageFragmentProvider(
|
val packageFragmentProvider = createBuiltInPackageFragmentProvider(
|
||||||
LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), ClassDescriptorFactory.EMPTY
|
LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), ClassDescriptorFactory.EMPTY
|
||||||
|
|||||||
+1
-1
@@ -78,7 +78,7 @@ class KotlinJavascriptSerializerTest : TestCaseWithTmpdir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deserialize(metaFile: File): ModuleDescriptorImpl {
|
private fun deserialize(metaFile: File): ModuleDescriptorImpl {
|
||||||
val module = KotlinTestUtils.createEmptyModule("<$MODULE_NAME>", JsPlatform)
|
val module = KotlinTestUtils.createEmptyModule("<$MODULE_NAME>", JsPlatform, JsPlatform.builtIns)
|
||||||
val metadata = KotlinJavascriptMetadataUtils.loadMetadata(metaFile)
|
val metadata = KotlinJavascriptMetadataUtils.loadMetadata(metaFile)
|
||||||
assert(metadata.size == 1)
|
assert(metadata.size == 1)
|
||||||
|
|
||||||
|
|||||||
@@ -16,13 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.generators.evaluate
|
package org.jetbrains.kotlin.generators.evaluate
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
import org.jetbrains.kotlin.utils.Printer
|
import org.jetbrains.kotlin.utils.Printer
|
||||||
@@ -50,7 +49,7 @@ fun generate(): String {
|
|||||||
val unaryOperationsMap = arrayListOf<Triple<String, List<KotlinType>, Boolean>>()
|
val unaryOperationsMap = arrayListOf<Triple<String, List<KotlinType>, Boolean>>()
|
||||||
val binaryOperationsMap = arrayListOf<Pair<String, List<KotlinType>>>()
|
val binaryOperationsMap = arrayListOf<Pair<String, List<KotlinType>>>()
|
||||||
|
|
||||||
val builtIns = TargetPlatform.Default.builtIns
|
val builtIns = DefaultBuiltIns.Instance
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val allPrimitiveTypes = builtIns.builtInsPackageScope.getContributedDescriptors()
|
val allPrimitiveTypes = builtIns.builtInsPackageScope.getContributedDescriptors()
|
||||||
.filter { it is ClassDescriptor && KotlinBuiltIns.isPrimitiveType(it.defaultType) } as List<ClassDescriptor>
|
.filter { it is ClassDescriptor && KotlinBuiltIns.isPrimitiveType(it.defaultType) } as List<ClassDescriptor>
|
||||||
|
|||||||
+10
-1
@@ -27,6 +27,7 @@ import com.intellij.psi.util.PsiModificationTracker
|
|||||||
import com.intellij.util.containers.SLRUCache
|
import com.intellij.util.containers.SLRUCache
|
||||||
import org.jetbrains.kotlin.analyzer.EmptyResolverForProject
|
import org.jetbrains.kotlin.analyzer.EmptyResolverForProject
|
||||||
import org.jetbrains.kotlin.asJava.outOfBlockModificationCount
|
import org.jetbrains.kotlin.asJava.outOfBlockModificationCount
|
||||||
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||||
import org.jetbrains.kotlin.container.getService
|
import org.jetbrains.kotlin.container.getService
|
||||||
@@ -36,6 +37,7 @@ import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
|||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
@@ -238,10 +240,17 @@ private fun globalResolveSessionProvider(
|
|||||||
?.withCompositeExceptionTrackerUnderSameLock()
|
?.withCompositeExceptionTrackerUnderSameLock()
|
||||||
?: GlobalContext(logProcessCanceled)
|
?: GlobalContext(logProcessCanceled)
|
||||||
|
|
||||||
|
val builtIns: KotlinBuiltIns = when (platform) {
|
||||||
|
is JsPlatform -> JsPlatform.builtIns
|
||||||
|
is JvmPlatform -> JvmBuiltIns.Instance
|
||||||
|
else -> DefaultBuiltIns.Instance
|
||||||
|
}
|
||||||
|
|
||||||
val moduleResolverProvider = createModuleResolverProvider(
|
val moduleResolverProvider = createModuleResolverProvider(
|
||||||
debugName, project, globalContext,
|
debugName, project, globalContext,
|
||||||
AnalyzerFacadeProvider.getAnalyzerFacade(platform),
|
AnalyzerFacadeProvider.getAnalyzerFacade(platform),
|
||||||
syntheticFiles, delegateResolverForProject, moduleFilter
|
syntheticFiles, delegateResolverForProject, moduleFilter,
|
||||||
|
builtIns
|
||||||
)
|
)
|
||||||
val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker)
|
val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker)
|
||||||
return CachedValueProvider.Result.create(moduleResolverProvider, allDependencies)
|
return CachedValueProvider.Result.create(moduleResolverProvider, allDependencies)
|
||||||
|
|||||||
+5
-3
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ModuleRootManager
|
|||||||
import org.jetbrains.kotlin.analyzer.AnalyzerFacade
|
import org.jetbrains.kotlin.analyzer.AnalyzerFacade
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleContent
|
import org.jetbrains.kotlin.analyzer.ModuleContent
|
||||||
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.context.GlobalContextImpl
|
import org.jetbrains.kotlin.context.GlobalContextImpl
|
||||||
import org.jetbrains.kotlin.context.withProject
|
import org.jetbrains.kotlin.context.withProject
|
||||||
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
||||||
@@ -40,7 +41,8 @@ fun createModuleResolverProvider(
|
|||||||
analyzerFacade: AnalyzerFacade<JvmPlatformParameters>,
|
analyzerFacade: AnalyzerFacade<JvmPlatformParameters>,
|
||||||
syntheticFiles: Collection<KtFile>,
|
syntheticFiles: Collection<KtFile>,
|
||||||
delegateResolver: ResolverForProject<IdeaModuleInfo>,
|
delegateResolver: ResolverForProject<IdeaModuleInfo>,
|
||||||
moduleFilter: (IdeaModuleInfo) -> Boolean
|
moduleFilter: (IdeaModuleInfo) -> Boolean,
|
||||||
|
builtIns: KotlinBuiltIns
|
||||||
): ModuleResolverProvider {
|
): ModuleResolverProvider {
|
||||||
|
|
||||||
val allModuleInfos = collectAllModuleInfosFromIdeaModel(project).toHashSet()
|
val allModuleInfos = collectAllModuleInfosFromIdeaModel(project).toHashSet()
|
||||||
@@ -64,8 +66,8 @@ fun createModuleResolverProvider(
|
|||||||
|
|
||||||
val resolverForProject = analyzerFacade.setupResolverForProject(
|
val resolverForProject = analyzerFacade.setupResolverForProject(
|
||||||
debugName, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent,
|
debugName, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent,
|
||||||
jvmPlatformParameters, IdeaEnvironment, delegateResolver,
|
jvmPlatformParameters, IdeaEnvironment, builtIns,
|
||||||
{ m, c -> IDEPackagePartProvider(c.moduleContentScope) }
|
delegateResolver, { m, c -> IDEPackagePartProvider(c.moduleContentScope) }
|
||||||
)
|
)
|
||||||
return resolverForProject
|
return resolverForProject
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ class KotlinJavaScriptDecompiledTextConsistencyTest : TextConsistencyBaseTest()
|
|||||||
|
|
||||||
override fun getModuleDescriptor(): ModuleDescriptor {
|
override fun getModuleDescriptor(): ModuleDescriptor {
|
||||||
val stdlibJar = PathUtil.getKotlinPathsForDistDirectory().jsStdLibJarPath.absolutePath
|
val stdlibJar = PathUtil.getKotlinPathsForDistDirectory().jsStdLibJarPath.absolutePath
|
||||||
val module = KotlinTestUtils.createEmptyModule("<module for stdlib>", JsPlatform)
|
val module = KotlinTestUtils.createEmptyModule("<module for stdlib>", JsPlatform, JsPlatform.builtIns)
|
||||||
val metadata = KotlinJavascriptMetadataUtils.loadMetadata(stdlibJar)
|
val metadata = KotlinJavascriptMetadataUtils.loadMetadata(stdlibJar)
|
||||||
assert(metadata.size == 1)
|
assert(metadata.size == 1)
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ public final class TopDownAnalyzerFacadeForJS {
|
|||||||
BindingTrace trace = new BindingTraceContext();
|
BindingTrace trace = new BindingTraceContext();
|
||||||
|
|
||||||
MutableModuleContext newModuleContext = ContextKt.ContextForNewModule(
|
MutableModuleContext newModuleContext = ContextKt.ContextForNewModule(
|
||||||
config.getProject(), Name.special("<" + config.getModuleId() + ">"), JsPlatform.INSTANCE
|
config.getProject(), Name.special("<" + config.getModuleId() + ">"), JsPlatform.INSTANCE,
|
||||||
|
JsPlatform.INSTANCE.getBuiltIns()
|
||||||
);
|
);
|
||||||
newModuleContext.setDependencies(computeDependencies(newModuleContext.getModule(), config));
|
newModuleContext.setDependencies(computeDependencies(newModuleContext.getModule(), config));
|
||||||
return analyzeFilesWithGivenTrace(files, trace, newModuleContext, config);
|
return analyzeFilesWithGivenTrace(files, trace, newModuleContext, config);
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.js.config;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.util.SmartList;
|
import com.intellij.util.SmartList;
|
||||||
import kotlin.collections.CollectionsKt;
|
|
||||||
import kotlin.Unit;
|
import kotlin.Unit;
|
||||||
|
import kotlin.collections.CollectionsKt;
|
||||||
import kotlin.jvm.functions.Function1;
|
import kotlin.jvm.functions.Function1;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -160,8 +160,8 @@ public abstract class Config {
|
|||||||
", but metadata.abiVersion = " + metadata.getAbiVersion();
|
", but metadata.abiVersion = " + metadata.getAbiVersion();
|
||||||
|
|
||||||
ModuleDescriptorImpl moduleDescriptor = TargetPlatformKt.createModule(
|
ModuleDescriptorImpl moduleDescriptor = TargetPlatformKt.createModule(
|
||||||
JsPlatform.INSTANCE, Name.special("<" + metadata.getModuleName() + ">"), storageManager
|
JsPlatform.INSTANCE, Name.special("<" + metadata.getModuleName() + ">"), storageManager,
|
||||||
);
|
JsPlatform.INSTANCE.getBuiltIns());
|
||||||
|
|
||||||
PackageFragmentProvider provider =
|
PackageFragmentProvider provider =
|
||||||
KotlinJavascriptSerializationUtil.createPackageFragmentProvider(moduleDescriptor, metadata.getBody(), storageManager);
|
KotlinJavascriptSerializationUtil.createPackageFragmentProvider(moduleDescriptor, metadata.getBody(), storageManager);
|
||||||
|
|||||||
Reference in New Issue
Block a user