js compiler running
diff --git a/compiler/ir/backend.js/build.gradle.kts b/compiler/ir/backend.js/build.gradle.kts
index 011fe36..e230aec 100644
--- a/compiler/ir/backend.js/build.gradle.kts
+++ b/compiler/ir/backend.js/build.gradle.kts
@@ -13,6 +13,7 @@
dependencies {
compileOnly(KOTLIN_COMPOSE_STDLIB)
+ compileOnly(project(":compiler:serialization.js"))
compileOnly("org.jetbrains.kotlin:kotlin-compiler:$COMPOSE_VERSION")
compileOnly("org.jetbrains.kotlin:kotlin-plugin:$COMPOSE_VERSION")
compileOnly("org.jetbrains.kotlin:kotlin-intellij-core:$COMPOSE_VERSION")
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
index a92ca8c..e1289cb 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
@@ -173,7 +173,7 @@
)
private val localDeclarationsLoweringPhase = makeJsModulePhase(
- ::LocalDeclarationsLowering,
+ { context -> LocalDeclarationsLowering(context) },
name = "LocalDeclarationsLowering",
description = "Move local declarations into nearest declaration container",
prerequisite = setOf(sharedVariablesLoweringPhase, localDelegatedPropertiesLoweringPhase)
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 3324a7c..6f7d75e 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
@@ -25,7 +25,7 @@
return DFS.topologicalOrder(dependencies) { m ->
val descriptor = m.descriptor
descriptor.allDependencyModules.filter { it != descriptor }.map { mapping[it] }
- }.reversed()
+ }.reversed() as Collection<IrModuleFragment>
}
fun compile(
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ConstLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ConstLowering.kt
index b3408b7..9b3cf94 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ConstLowering.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ConstLowering.kt
@@ -41,17 +41,18 @@
}
private fun createLong(v: Long): IrExpression =
- lowerConst(context.intrinsics.longClassSymbol, IrConstImpl<*>::int, v.toInt(), (v shr 32).toInt())
+ lowerConst(context.intrinsics.longClassSymbol, IrConstImpl.Companion::int, v.toInt(), (v shr 32)
+ .toInt())
override fun <T> visitConst(expression: IrConst<T>): IrExpression {
with(context.intrinsics) {
if (expression.type.isUnsigned()) {
return when (expression.type.classifierOrNull) {
- uByteClassSymbol -> lowerConst(uByteClassSymbol, IrConstImpl<*>::byte, IrConstKind.Byte.valueOf(expression))
+ uByteClassSymbol -> lowerConst(uByteClassSymbol, IrConstImpl.Companion::byte, IrConstKind.Byte.valueOf(expression))
- uShortClassSymbol -> lowerConst(uShortClassSymbol, IrConstImpl<*>::short, IrConstKind.Short.valueOf(expression))
+ uShortClassSymbol -> lowerConst(uShortClassSymbol, IrConstImpl.Companion::short, IrConstKind.Short.valueOf(expression))
- uIntClassSymbol -> lowerConst(uIntClassSymbol, IrConstImpl<*>::int, IrConstKind.Int.valueOf(expression))
+ uIntClassSymbol -> lowerConst(uIntClassSymbol, IrConstImpl.Companion::int, IrConstKind.Int.valueOf(expression))
uLongClassSymbol -> lowerConst(uLongClassSymbol, { _, _, _, v -> createLong(v) }, IrConstKind.Long.valueOf(expression))
@@ -60,7 +61,7 @@
}
return when {
expression.kind is IrConstKind.Char ->
- lowerConst(charClassSymbol, IrConstImpl<*>::int, IrConstKind.Char.valueOf(expression).toInt())
+ lowerConst(charClassSymbol, IrConstImpl.Companion::int, IrConstKind.Char.valueOf(expression).toInt())
expression.kind is IrConstKind.Long ->
createLong(IrConstKind.Long.valueOf(expression))
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt
index 8797a0b..4142118 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt
@@ -14,6 +14,7 @@
import org.jetbrains.kotlin.backend.common.lower.irBlockBody
import org.jetbrains.kotlin.backend.common.lower.irIfThen
import org.jetbrains.kotlin.descriptors.Visibilities
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
@@ -336,11 +337,11 @@
val entryInstances = createEnumEntryInstanceVariables()
// Create boolean flag that indicates if entry instances were initialized.
- val entryInstancesInitializedVar = createEntryInstancesInitializedVar()
+ val entryInstancesInitializedVar: IrField = createEntryInstancesInitializedVar()
// Create function that initializes all enum entry instances using `IrEnumEntry.initializationExpression`.
// It should be called on the first `IrGetEnumValue`, consecutive calls to this function will do nothing.
- val initEntryInstancesFun = createInitEntryInstancesFun(entryInstancesInitializedVar, entryInstances)
+ val initEntryInstancesFun: IrSimpleFunction = createInitEntryInstancesFun(entryInstancesInitializedVar, entryInstances)
// Create entry instance getters. These are used to lower `IrGetEnumValue`.
val entryGetInstanceFuns = createGetEntryInstanceFuns(initEntryInstancesFun, entryInstances)
@@ -351,7 +352,13 @@
// Remove IrEnumEntry nodes from class declarations. Replace them with corresponding class declarations (if they have them).
replaceIrEntriesWithCorrespondingClasses()
- return listOf(irClass) + entryInstances + listOf(entryInstancesInitializedVar, initEntryInstancesFun) + entryGetInstanceFuns
+ val x: List<IrClass> = listOf(irClass)
+ val y: List<IrDeclaration> = entryInstances
+ val z: List<IrDeclaration> = listOf(entryInstancesInitializedVar,
+ initEntryInstancesFun)
+ val z1: List<IrSimpleFunction> = entryGetInstanceFuns
+
+ return x + y + z + z1
}
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt
index a0b5366..7c940fa 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt
@@ -520,8 +520,9 @@
override fun visitReturn(expression: IrReturn) {
expression.acceptChildrenVoid(this)
- if (expression.returnTargetSymbol is IrReturnableBlockSymbol) {
- val (exitState, varSymbol) = returnableBlockMap[expression.returnTargetSymbol]!!
+ val rts = expression.returnTargetSymbol
+ if (rts is IrReturnableBlockSymbol) {
+ val (exitState, varSymbol) = returnableBlockMap[rts]!!
if (varSymbol != null) {
transformLastExpression { JsIrBuilder.buildSetVariable(varSymbol, it, it.type) }
}
diff --git a/compiler/ir/serialization.js/build.gradle.kts b/compiler/ir/serialization.js/build.gradle.kts
index dcaa8d4..011fe36 100644
--- a/compiler/ir/serialization.js/build.gradle.kts
+++ b/compiler/ir/serialization.js/build.gradle.kts
@@ -1,197 +1,28 @@
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
plugins {
kotlin("jvm")
- id("jps-compatible")
+}
+
+val COMPOSE_VERSION = "1.3.50-compose-20190806"
+val KOTLIN_COMPOSE_STDLIB = "org.jetbrains.kotlin:kotlin-stdlib:$COMPOSE_VERSION"
+
+repositories {
+ maven(project.rootProject.projectDir.resolve("../../prebuilts/androidx/external").absolutePath)
}
dependencies {
- compile(project(":compiler:ir.psi2ir"))
- compile(project(":compiler:ir.serialization.common"))
- compile(project(":js:js.frontend"))
-
- compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
-
- testCompile(intellijCoreDep()) { includeJars("intellij-core") }
- testCompile(project(":compiler:frontend"))
- testCompile(project(":compiler:cli"))
- testCompile(project(":compiler:util"))
-
- testRuntime(intellijDep()) { includeJars("picocontainer", "trove4j", "guava", "jdom", rootProject = rootProject) }
+ compileOnly(KOTLIN_COMPOSE_STDLIB)
+ compileOnly("org.jetbrains.kotlin:kotlin-compiler:$COMPOSE_VERSION")
+ compileOnly("org.jetbrains.kotlin:kotlin-plugin:$COMPOSE_VERSION")
+ compileOnly("org.jetbrains.kotlin:kotlin-intellij-core:$COMPOSE_VERSION")
+ compileOnly("org.jetbrains.kotlin:kotlin-platform-api:$COMPOSE_VERSION")
}
-sourceSets {
- "main" { projectDefault() }
- "test" { projectDefault() }
-}
-
-val unimplementedNativeBuiltIns =
- (file("$rootDir/core/builtins/native/kotlin/").list().toSet() - file("$rootDir/libraries/stdlib/js-ir/builtins/").list())
- .map { "core/builtins/native/kotlin/$it" }
-
-// Required to compile native builtins with the rest of runtime
-val builtInsHeader = """@file:Suppress(
- "NON_ABSTRACT_FUNCTION_WITH_NO_BODY",
- "MUST_BE_INITIALIZED_OR_BE_ABSTRACT",
- "EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE",
- "PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED",
- "WRONG_MODIFIER_TARGET"
-)
-"""
-
-val fullRuntimeSources by task<Sync> {
-
- val sources = listOf(
- "core/builtins/src/kotlin/",
- "libraries/stdlib/common/src/",
- "libraries/stdlib/src/kotlin/",
- "libraries/stdlib/unsigned/",
- "libraries/stdlib/js/src/",
- "libraries/stdlib/js/runtime/",
- "libraries/stdlib/js-ir/builtins/",
- "libraries/stdlib/js-ir/src/",
- "libraries/stdlib/js-ir/runtime/",
-
- // TODO get rid - move to test module
- "js/js.translator/testData/_commonFiles/"
- ) + unimplementedNativeBuiltIns
-
- val excluded = listOf(
- // stdlib/js/src/generated is used exclusively for current `js-v1` backend.
- "libraries/stdlib/js/src/generated/**",
-
- // JS-specific optimized version of emptyArray() already defined
- "core/builtins/src/kotlin/ArrayIntrinsics.kt"
- )
-
- sources.forEach { path ->
- from("$rootDir/$path") {
- into(path.dropLastWhile { it != '/' })
- excluded.filter { it.startsWith(path) }.forEach {
- exclude(it.substring(path.length))
- }
- }
- }
-
- into("$buildDir/fullRuntime/src")
-
- doLast {
- unimplementedNativeBuiltIns.forEach { path ->
- val file = File("$buildDir/fullRuntime/src/$path")
- val sourceCode = builtInsHeader + file.readText()
- file.writeText(sourceCode)
- }
+tasks.withType<KotlinCompile>().all {
+ kotlinOptions {
+ jvmTarget = "1.8"
}
}
-val reducedRuntimeSources by task<Sync> {
- dependsOn(fullRuntimeSources)
-
- from(fullRuntimeSources.outputs.files.singleFile) {
- exclude(
- listOf(
- "libraries/stdlib/unsigned/**",
- "libraries/stdlib/common/src/generated/_Arrays.kt",
- "libraries/stdlib/common/src/generated/_Collections.kt",
- "libraries/stdlib/common/src/generated/_Comparisons.kt",
- "libraries/stdlib/common/src/generated/_Maps.kt",
- "libraries/stdlib/common/src/generated/_Sequences.kt",
- "libraries/stdlib/common/src/generated/_Sets.kt",
- "libraries/stdlib/common/src/generated/_Strings.kt",
- "libraries/stdlib/common/src/generated/_UArrays.kt",
- "libraries/stdlib/common/src/generated/_URanges.kt",
- "libraries/stdlib/common/src/generated/_UCollections.kt",
- "libraries/stdlib/common/src/generated/_UComparisons.kt",
- "libraries/stdlib/common/src/generated/_USequences.kt",
- "libraries/stdlib/common/src/kotlin/SequencesH.kt",
- "libraries/stdlib/common/src/kotlin/TextH.kt",
- "libraries/stdlib/common/src/kotlin/UMath.kt",
- "libraries/stdlib/common/src/kotlin/collections/**",
- "libraries/stdlib/common/src/kotlin/ioH.kt",
- "libraries/stdlib/js-ir/runtime/collectionsHacks.kt",
- "libraries/stdlib/js-ir/src/generated/**",
- "libraries/stdlib/js-ir/src/kotlin/text/**",
- "libraries/stdlib/js/src/jquery/**",
- "libraries/stdlib/js/src/org.w3c/**",
- "libraries/stdlib/js/src/kotlin/char.kt",
- "libraries/stdlib/js/src/kotlin/collections.kt",
- "libraries/stdlib/js/src/kotlin/collections/**",
- "libraries/stdlib/js/src/kotlin/time/**",
- "libraries/stdlib/js/src/kotlin/console.kt",
- "libraries/stdlib/js/src/kotlin/coreDeprecated.kt",
- "libraries/stdlib/js/src/kotlin/date.kt",
- "libraries/stdlib/js/src/kotlin/debug.kt",
- "libraries/stdlib/js/src/kotlin/grouping.kt",
- "libraries/stdlib/js/src/kotlin/json.kt",
- "libraries/stdlib/js/src/kotlin/promise.kt",
- "libraries/stdlib/js/src/kotlin/regexp.kt",
- "libraries/stdlib/js/src/kotlin/sequence.kt",
- "libraries/stdlib/js/src/kotlin/text/**",
- "libraries/stdlib/src/kotlin/collections/**",
- "libraries/stdlib/src/kotlin/experimental/bitwiseOperations.kt",
- "libraries/stdlib/src/kotlin/properties/Delegates.kt",
- "libraries/stdlib/src/kotlin/random/URandom.kt",
- "libraries/stdlib/src/kotlin/text/**",
- "libraries/stdlib/src/kotlin/time/**",
- "libraries/stdlib/src/kotlin/util/KotlinVersion.kt",
- "libraries/stdlib/src/kotlin/util/Tuples.kt",
- "libraries/stdlib/js/src/kotlin/dom/**",
- "libraries/stdlib/js/src/kotlin/browser/**"
- )
- )
- }
-
- from("$rootDir/libraries/stdlib/js-ir/smallRuntime") {
- into("libraries/stdlib/js-ir/runtime/")
- }
-
- into("$buildDir/reducedRuntime/src")
-}
-
-
-fun JavaExec.buildKLib(sources: List<String>, dependencies: List<String>, outPath: String, commonSources: List<String>) {
- inputs.files(sources)
- outputs.dir(file(outPath).parent)
-
- classpath = sourceSets.test.get().runtimeClasspath
- main = "org.jetbrains.kotlin.ir.backend.js.GenerateIrRuntimeKt"
- workingDir = rootDir
- args = sources.toList() + listOf("-o", outPath) + dependencies.flatMap { listOf("-d", it) } + commonSources.flatMap { listOf("-c", it) }
-
- passClasspathInJar()
-}
-
-val generateFullRuntimeKLib by task<NoDebugJavaExec> {
- dependsOn(fullRuntimeSources)
-
- buildKLib(sources = listOf(fullRuntimeSources.outputs.files.singleFile.path),
- dependencies = emptyList(),
- outPath = "$buildDir/fullRuntime/klib",
- commonSources = listOf("common", "src", "unsigned").map { "$buildDir/fullRuntime/src/libraries/stdlib/$it" }
- )
-}
-
-val generateReducedRuntimeKLib by task<NoDebugJavaExec> {
- dependsOn(reducedRuntimeSources)
-
- buildKLib(sources = listOf(reducedRuntimeSources.outputs.files.singleFile.path),
- dependencies = emptyList(),
- outPath = "$buildDir/reducedRuntime/klib",
- commonSources = listOf("common", "src", "unsigned").map { "$buildDir/reducedRuntime/src/libraries/stdlib/$it" }
- )
-}
-
-val kotlinTestCommonSources = listOf(
- "$rootDir/libraries/kotlin.test/annotations-common/src/main",
- "$rootDir/libraries/kotlin.test/common/src/main"
-)
-val generateKotlinTestKLib by task<NoDebugJavaExec> {
- dependsOn(generateFullRuntimeKLib)
-
- buildKLib(
- sources = listOf("$rootDir/libraries/kotlin.test/js/src/main") + kotlinTestCommonSources,
- dependencies = listOf("${generateFullRuntimeKLib.outputs.files.singleFile.path}/klib"),
- outPath = "$buildDir/kotlin.test/klib",
- commonSources = kotlinTestCommonSources
- )
-}
-
-testsJar {}
+sourceSets.maybeCreate("main").java.srcDirs("src")
\ No newline at end of file