Refactor, move TargetPlatform to ModuleInfo
This commit is contained in:
@@ -128,6 +128,7 @@ interface ModuleInfo {
|
|||||||
get() = false
|
get() = false
|
||||||
val name: Name
|
val name: Name
|
||||||
fun dependencies(): List<ModuleInfo>
|
fun dependencies(): List<ModuleInfo>
|
||||||
|
val platform: TargetPlatform? get() = null
|
||||||
fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf()
|
fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf()
|
||||||
fun dependencyOnBuiltIns(): DependencyOnBuiltIns = DependenciesOnBuiltIns.LAST
|
fun dependencyOnBuiltIns(): DependencyOnBuiltIns = DependenciesOnBuiltIns.LAST
|
||||||
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
|
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
|||||||
)
|
)
|
||||||
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
||||||
|
|
||||||
if (moduleInfo is LibraryModuleInfo && moduleInfo.libraryPlatform == JsPlatform) {
|
if (moduleInfo is LibraryModuleInfo && moduleInfo.platform == JsPlatform) {
|
||||||
val providers = moduleInfo.getLibraryRoots()
|
val providers = moduleInfo.getLibraryRoots()
|
||||||
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) }
|
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) }
|
||||||
.filter { it.version.isCompatible() }
|
.filter { it.version.isCompatible() }
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
|||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
|
|
||||||
interface LibraryModuleInfo : ModuleInfo {
|
interface LibraryModuleInfo : ModuleInfo {
|
||||||
val libraryPlatform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
|
|
||||||
fun getLibraryRoots(): Collection<String>
|
fun getLibraryRoots(): Collection<String>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,8 +98,12 @@ private fun ideaModelDependencies(module: Module, productionOnly: Boolean): List
|
|||||||
|
|
||||||
interface ModuleSourceInfo : IdeaModuleInfo {
|
interface ModuleSourceInfo : IdeaModuleInfo {
|
||||||
val module: Module
|
val module: Module
|
||||||
|
|
||||||
override val moduleOrigin: ModuleOrigin
|
override val moduleOrigin: ModuleOrigin
|
||||||
get() = ModuleOrigin.MODULE
|
get() = ModuleOrigin.MODULE
|
||||||
|
|
||||||
|
override val platform: TargetPlatform
|
||||||
|
get() = TargetPlatformDetector.getPlatform(module)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ModuleProductionSourceInfo(override val module: Module) : ModuleSourceInfo {
|
data class ModuleProductionSourceInfo(override val module: Module) : ModuleSourceInfo {
|
||||||
@@ -201,7 +205,7 @@ class LibraryInfo(val project: Project, val library: Library) : IdeaModuleInfo,
|
|||||||
return result.toList()
|
return result.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
override val libraryPlatform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
get() = TargetPlatformDetector.getPlatform(library)
|
get() = TargetPlatformDetector.getPlatform(library)
|
||||||
|
|
||||||
override val sourcesModuleInfo: SourceForBinaryModuleInfo
|
override val sourcesModuleInfo: SourceForBinaryModuleInfo
|
||||||
|
|||||||
+2
-11
@@ -28,12 +28,10 @@ import org.jetbrains.kotlin.analyzer.ModuleContent
|
|||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
import org.jetbrains.kotlin.analyzer.ResolverForProject
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.caches.resolve.LibraryModuleInfo
|
|
||||||
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.AnalyzerFacadeProvider
|
import org.jetbrains.kotlin.idea.project.AnalyzerFacadeProvider
|
||||||
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -82,11 +80,11 @@ fun createModuleResolverProvider(
|
|||||||
|
|
||||||
return AnalyzerFacade.setupResolverForProject(
|
return AnalyzerFacade.setupResolverForProject(
|
||||||
debugName, globalContext.withProject(project), modulesToCreateResolversFor,
|
debugName, globalContext.withProject(project), modulesToCreateResolversFor,
|
||||||
{ module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.getTargetPlatform() ?: platform) },
|
{ module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.platform ?: platform) },
|
||||||
modulesContent, jvmPlatformParameters, IdeaEnvironment, builtInsProvider,
|
modulesContent, jvmPlatformParameters, IdeaEnvironment, builtInsProvider,
|
||||||
delegateResolver, { _, c -> IDEPackagePartProvider(c.moduleContentScope) },
|
delegateResolver, { _, c -> IDEPackagePartProvider(c.moduleContentScope) },
|
||||||
sdk?.let { SdkInfo(project, it) },
|
sdk?.let { SdkInfo(project, it) },
|
||||||
modulePlatforms = { module -> module.getTargetPlatform()?.multiTargetPlatform }
|
modulePlatforms = { module -> module.platform?.multiTargetPlatform }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,13 +103,6 @@ fun createModuleResolverProvider(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ModuleInfo.getTargetPlatform(): TargetPlatform? =
|
|
||||||
when (this) {
|
|
||||||
is ModuleSourceInfo -> TargetPlatformDetector.getPlatform(module)
|
|
||||||
is LibraryModuleInfo -> libraryPlatform
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
|
|
||||||
fun collectAllModuleInfosFromIdeaModel(project: Project): List<IdeaModuleInfo> {
|
fun collectAllModuleInfosFromIdeaModel(project: Project): List<IdeaModuleInfo> {
|
||||||
val ideaModules = ModuleManager.getInstance(project).modules.toList()
|
val ideaModules = ModuleManager.getInstance(project).modules.toList()
|
||||||
val modulesSourcesInfos = ideaModules.flatMap { listOf(it.productionSourceInfo(), it.testSourceInfo()) }
|
val modulesSourcesInfos = ideaModules.flatMap { listOf(it.productionSourceInfo(), it.testSourceInfo()) }
|
||||||
|
|||||||
Reference in New Issue
Block a user