~ require by relative path
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
index 991a5f0..aeccf9b 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
@@ -230,7 +230,8 @@
generateFullJs = !arguments.irDce,
generateDceJs = arguments.irDce,
dceDriven = arguments.irDceDriven,
- multiModule = arguments.irPerModule
+ multiModule = arguments.irPerModule,
+ commonJsRelativePath = true
)
} catch (e: JsIrCompilationError) {
return COMPILATION_ERROR
@@ -239,9 +240,9 @@
val jsCode = if (arguments.irDce && !arguments.irDceDriven) compiledModule.dceJsCode!! else compiledModule.jsCode!!
outputFile.writeText(jsCode.mainModule)
jsCode.dependencies.forEach { (name, content) ->
- val nodeModules = outputFile.resolveSibling("node_modules")
- if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir()
- nodeModules.resolve("$name.js").writeText(content)
+// val nodeModules = outputFile.resolveSibling("node_modules")
+// if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir()
+ outputFile.resolveSibling("$name.js").writeText(content)
}
if (arguments.generateDts) {
val dtsFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "d.ts")!!
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
index 669473e8..3dba6bd 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
@@ -46,7 +46,8 @@
generateDceJs: Boolean = false,
dceDriven: Boolean = false,
es6mode: Boolean = false,
- multiModule: Boolean = false
+ multiModule: Boolean = false,
+ commonJsRelativePath: Boolean = false
): CompilerResult {
stageController = object : StageController {}
@@ -94,7 +95,8 @@
mainArguments,
fullJs = true,
dceJs = false,
- multiModule = multiModule
+ multiModule = multiModule,
+ commonJsRelativePath = commonJsRelativePath
)
return transformer.generateModule(allModules)
} else {
@@ -104,7 +106,8 @@
mainArguments,
fullJs = generateFullJs,
dceJs = generateDceJs,
- multiModule = multiModule
+ multiModule = multiModule,
+ commonJsRelativePath = commonJsRelativePath
)
return transformer.generateModule(allModules)
}
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
index 7d33a3b..7fd930b 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
@@ -32,7 +32,8 @@
var namer: NameTables = NameTables(emptyList()),
private val fullJs: Boolean = true,
private val dceJs: Boolean = false,
- private val multiModule: Boolean = false
+ private val multiModule: Boolean = false,
+ private val commonJsRelativePath: Boolean = false
) {
private val generateRegionComments = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_REGION_COMMENTS)
@@ -204,7 +205,7 @@
}
val moduleName = declareFreshGlobal(module.safeName)
- modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef())
+ modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef(), commonJsRelativePath)
names.forEach {
imports += JsVars(JsVars.JsVar(JsName(it), JsNameRef(it, JsNameRef("\$crossModule\$", moduleName.makeRef()))))
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
index 1d9aace..5ac6412 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
@@ -94,7 +94,7 @@
val moduleName = scope.declareName("module")
val requireName = scope.declareName("require")
- val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalName)) }
+ val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalCommonJsName)) }
val invocation = JsInvocation(function, listOf(JsNameRef("exports", moduleName.makeRef())) + invocationArgs)
return listOf(invocation.makeStmt())
}
diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
index 3a067e2..9bddb30 100644
--- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
+++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
@@ -16,7 +16,14 @@
package org.jetbrains.kotlin.js.backend.ast
-class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?) {
+class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?, val commonJsRelativePath: Boolean) {
+
+ constructor(externalName: String, internalName: JsName, plainReference: JsExpression?): this(externalName, internalName, plainReference, false)
+
val key = JsImportedModuleKey(externalName, plainReference?.toString())
}
+
+val JsImportedModule.externalCommonJsName: String
+ get() = if (commonJsRelativePath) "./$externalName.js" else externalName
+
data class JsImportedModuleKey(val baseName: String, val plainName: String?)
\ No newline at end of file
diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
index 18106a6..e42d269 100644
--- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
+++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
@@ -72,6 +72,6 @@
* Returns the current version of the Kotlin standard library.
*/
@kotlin.jvm.JvmField
- public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 255) // value is written here automatically during build
+ public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 99) // value is written here automatically during build
}
}