Refactor, move TargetPlatform to ModuleInfo

This commit is contained in:
Alexander Udalov
2017-04-18 17:27:48 +03:00
parent 9a8dc14616
commit a96b67ea29
5 changed files with 10 additions and 14 deletions
@@ -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
@@ -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()) }