Add capabilities to moduleDescriptor as a way to put user data into module

Add OriginCapability to ide modules
This commit is contained in:
Pavel V. Talanov
2015-10-29 16:44:13 +03:00
parent 736b496f6a
commit fff404780c
6 changed files with 53 additions and 6 deletions
@@ -116,6 +116,8 @@ public interface ModuleInfo {
public fun dependencies(): List<ModuleInfo>
public fun friends(): Collection<ModuleInfo> = listOf()
public fun dependencyOnBuiltins(): DependencyOnBuiltins = DependenciesOnBuiltins.LAST
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
get() = emptyMap()
//TODO: (module refactoring) provide dependency on builtins after runtime in IDEA
public interface DependencyOnBuiltins {
@@ -158,7 +160,7 @@ public abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
val descriptorByModule = HashMap<M, ModuleDescriptorImpl>()
modules.forEach {
module ->
descriptorByModule[module] = targetPlatform.createModule(module.name, storageManager)
descriptorByModule[module] = targetPlatform.createModule(module.name, storageManager, module.capabilities)
}
return ResolverForProjectImpl(debugName, descriptorByModule, delegateResolver)
}
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.ModuleParameters
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.name.Name
@@ -88,8 +89,10 @@ open class PlatformConfigurator(
}
}
@JvmOverloads
fun TargetPlatform.createModule(
name: Name,
storageManager: StorageManager
) = ModuleDescriptorImpl(name, storageManager, defaultModuleParameters, builtIns)
storageManager: StorageManager,
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap()
) = ModuleDescriptorImpl(name, storageManager, defaultModuleParameters, builtIns, capabilities)