MPP: Support multiple 'expectedBy' dependencies for single module

#KT-22865 Fixed

Original commit: d9aa1796cd
This commit is contained in:
Alexey Sedunov
2018-02-20 19:26:24 +03:00
parent 4d1a929809
commit 0a3b3056d8
2 changed files with 18 additions and 4 deletions
@@ -192,7 +192,7 @@ class KotlinFacetSettings {
} }
} }
var implementedModuleName: String? = null var implementedModuleNames: List<String> = emptyList()
var productionOutputPath: String? = null var productionOutputPath: String? = null
var testOutputPath: String? = null var testOutputPath: String? = null
@@ -99,7 +99,12 @@ private fun readV2AndLaterConfig(element: Element): KotlinFacetSettings {
val platformName = element.getAttributeValue("platform") val platformName = element.getAttributeValue("platform")
val platformKind = TargetPlatformKind.ALL_PLATFORMS.firstOrNull { it.description == platformName } ?: TargetPlatformKind.DEFAULT_PLATFORM val platformKind = TargetPlatformKind.ALL_PLATFORMS.firstOrNull { it.description == platformName } ?: TargetPlatformKind.DEFAULT_PLATFORM
element.getChild("implements")?.let { element.getChild("implements")?.let {
implementedModuleName = (it.content.firstOrNull() as? Text)?.textTrim val items = it.getChildren("implement")
implementedModuleNames = if (items.isNotEmpty()) {
items.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
} else {
listOfNotNull((it.content.firstOrNull() as? Text)?.textTrim)
}
} }
element.getChild("compilerSettings")?.let { element.getChild("compilerSettings")?.let {
compilerSettings = CompilerSettings() compilerSettings = CompilerSettings()
@@ -237,8 +242,17 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
if (!useProjectSettings) { if (!useProjectSettings) {
element.setAttribute("useProjectSettings", useProjectSettings.toString()) element.setAttribute("useProjectSettings", useProjectSettings.toString())
} }
implementedModuleName?.let { if (implementedModuleNames.isNotEmpty()) {
element.addContent(Element("implements").apply { addContent(it) }) element.addContent(
Element("implements").apply {
val singleModule = implementedModuleNames.singleOrNull()
if (singleModule != null) {
addContent(singleModule)
} else {
implementedModuleNames.map { addContent(Element("implement").apply { addContent(it) }) }
}
}
)
} }
productionOutputPath?.let { productionOutputPath?.let {
if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) { if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) {