Parametrize module creation by platform with built-ins
This commit is contained in:
+10
-1
@@ -27,6 +27,7 @@ import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.util.containers.SLRUCache
|
||||
import org.jetbrains.kotlin.analyzer.EmptyResolverForProject
|
||||
import org.jetbrains.kotlin.asJava.outOfBlockModificationCount
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||
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.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||
@@ -238,10 +240,17 @@ private fun globalResolveSessionProvider(
|
||||
?.withCompositeExceptionTrackerUnderSameLock()
|
||||
?: GlobalContext(logProcessCanceled)
|
||||
|
||||
val builtIns: KotlinBuiltIns = when (platform) {
|
||||
is JsPlatform -> JsPlatform.builtIns
|
||||
is JvmPlatform -> JvmBuiltIns.Instance
|
||||
else -> DefaultBuiltIns.Instance
|
||||
}
|
||||
|
||||
val moduleResolverProvider = createModuleResolverProvider(
|
||||
debugName, project, globalContext,
|
||||
AnalyzerFacadeProvider.getAnalyzerFacade(platform),
|
||||
syntheticFiles, delegateResolverForProject, moduleFilter
|
||||
syntheticFiles, delegateResolverForProject, moduleFilter,
|
||||
builtIns
|
||||
)
|
||||
val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker)
|
||||
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.ModuleContent
|
||||
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.context.GlobalContextImpl
|
||||
import org.jetbrains.kotlin.context.withProject
|
||||
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
||||
@@ -40,7 +41,8 @@ fun createModuleResolverProvider(
|
||||
analyzerFacade: AnalyzerFacade<JvmPlatformParameters>,
|
||||
syntheticFiles: Collection<KtFile>,
|
||||
delegateResolver: ResolverForProject<IdeaModuleInfo>,
|
||||
moduleFilter: (IdeaModuleInfo) -> Boolean
|
||||
moduleFilter: (IdeaModuleInfo) -> Boolean,
|
||||
builtIns: KotlinBuiltIns
|
||||
): ModuleResolverProvider {
|
||||
|
||||
val allModuleInfos = collectAllModuleInfosFromIdeaModel(project).toHashSet()
|
||||
@@ -64,8 +66,8 @@ fun createModuleResolverProvider(
|
||||
|
||||
val resolverForProject = analyzerFacade.setupResolverForProject(
|
||||
debugName, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent,
|
||||
jvmPlatformParameters, IdeaEnvironment, delegateResolver,
|
||||
{ m, c -> IDEPackagePartProvider(c.moduleContentScope) }
|
||||
jvmPlatformParameters, IdeaEnvironment, builtIns,
|
||||
delegateResolver, { m, c -> IDEPackagePartProvider(c.moduleContentScope) }
|
||||
)
|
||||
return resolverForProject
|
||||
}
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ class KotlinJavaScriptDecompiledTextConsistencyTest : TextConsistencyBaseTest()
|
||||
|
||||
override fun getModuleDescriptor(): ModuleDescriptor {
|
||||
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)
|
||||
assert(metadata.size == 1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user