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