~move packages and add comments about the source of the files
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt
index 7153634..b37e9fb 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt
@@ -16,6 +16,7 @@
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.ir.IrElement
+import org.jetbrains.kotlin.ir.backend.js.lower.inline.ModuleIndex
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
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 0e49bd7..e0f5077 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
@@ -12,6 +12,8 @@
import org.jetbrains.kotlin.ir.backend.js.lower.*
import org.jetbrains.kotlin.ir.backend.js.lower.inline.FunctionInlining
import org.jetbrains.kotlin.ir.backend.js.lower.inline.ReturnableBlockLowering
+import org.jetbrains.kotlin.ir.backend.js.lower.inline.referenceAllTypeExternalClassifiers
+import org.jetbrains.kotlin.ir.backend.js.lower.inline.replaceUnboundSymbols
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
@@ -49,26 +51,7 @@
ExternalDependenciesGenerator(psi2IrContext.symbolTable, psi2IrContext.irBuiltIns).generateUnboundSymbolsAsDependencies(moduleFragment)
- println("Before inlining:")
- println(moduleFragment.dump())
-
- FunctionInlining(context).inline(moduleFragment)
-
- println("After inlining:")
- println(moduleFragment.dump())
-
- val symbolTable = context.symbolTable
- moduleFragment.referenceAllTypeExternalClassifiers(symbolTable)
-
- do {
- @Suppress("DEPRECATION")
- moduleFragment.replaceUnboundSymbols(context)
- moduleFragment.referenceAllTypeExternalClassifiers(symbolTable)
- } while (symbolTable.unboundClasses.isNotEmpty())
-
- moduleFragment.patchDeclarationParents()
-
-
+ context.performInlining(moduleFragment)
moduleFragment.files.forEach { context.lower(it) }
val transformer = SecondaryCtorLowering.CallsiteRedirectionTransformer(context)
@@ -79,11 +62,25 @@
return program.toString()
}
+fun JsIrBackendContext.performInlining(moduleFragment: IrModuleFragment) {
+ FunctionInlining(this).inline(moduleFragment)
+
+ val symbolTable = symbolTable
+ moduleFragment.referenceAllTypeExternalClassifiers(symbolTable)
+
+ do {
+ @Suppress("DEPRECATION")
+ moduleFragment.replaceUnboundSymbols(this)
+ moduleFragment.referenceAllTypeExternalClassifiers(symbolTable)
+ } while (symbolTable.unboundClasses.isNotEmpty())
+
+ moduleFragment.patchDeclarationParents()
+}
+
fun JsIrBackendContext.lower(file: IrFile) {
LateinitLowering(this, true).lower(file)
DefaultArgumentStubGenerator(this).runOnFilePostfix(file)
SharedVariablesLowering(this).runOnFilePostfix(file)
- // TODO: fails on SharedVariable lowering. Why?
ReturnableBlockLowering(this).lower(file)
LocalDeclarationsLowering(this).runOnFilePostfix(file)
InnerClassesLowering(this).runOnFilePostfix(file)
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/DeepCopyIrTreeWithDescriptors.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/DeepCopyIrTreeWithDescriptors.kt
index 4daaa55..cde7546 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/DeepCopyIrTreeWithDescriptors.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/DeepCopyIrTreeWithDescriptors.kt
@@ -36,6 +36,8 @@
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.types.typeUtil.makeNullable
+
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DeepCopyIrTreeWithDescriptors.kt
internal class DeepCopyIrTreeWithDescriptors(val targetDescriptor: FunctionDescriptor,
val parentDescriptor: DeclarationDescriptor,
val context: JsIrBackendContext) {
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/FunctionInlining.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/FunctionInlining.kt
index 37004c77..6f4382f 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/FunctionInlining.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/FunctionInlining.kt
@@ -41,6 +41,7 @@
typealias Context = JsIrBackendContext
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt
internal class FunctionInlining(val context: Context): IrElementTransformerVoidWithContext() {
// TODO private val deserializer = DeserializerDriver(context)
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/IrUnboundSymbolReplacer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUnboundSymbolReplacer.kt
similarity index 97%
rename from compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/IrUnboundSymbolReplacer.kt
rename to compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUnboundSymbolReplacer.kt
index fcf636ee..ff78305 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/IrUnboundSymbolReplacer.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUnboundSymbolReplacer.kt
@@ -3,13 +3,14 @@
* that can be found in the license/LICENSE.txt file.
*/
-package org.jetbrains.kotlin.ir.backend.js
+package org.jetbrains.kotlin.ir.backend.js.lower.inline
import org.jetbrains.kotlin.backend.common.pop
import org.jetbrains.kotlin.backend.common.push
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
+import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.lower.inline.addChildren
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
@@ -20,6 +21,7 @@
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.ir.visitors.*
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUnboundSymbolReplacer.kt
@Deprecated("")
internal fun IrModuleFragment.replaceUnboundSymbols(context: JsIrBackendContext) {
val collector = DeclarationSymbolCollector()
@@ -39,7 +41,12 @@
val symbolTable = context.symbolTable
- this.transformChildrenVoid(IrUnboundSymbolReplacer(symbolTable, collector.descriptorToSymbol))
+ this.transformChildrenVoid(
+ IrUnboundSymbolReplacer(
+ symbolTable,
+ collector.descriptorToSymbol
+ )
+ )
// Generate missing external stubs:
// TODO: ModuleGenerator::generateUnboundSymbolsAsDependencies(IRModuleFragment) is private function :/
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUtils2.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUtils2.kt
index b3515f8..9957537 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUtils2.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/IrUtils2.kt
@@ -12,6 +12,7 @@
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt
fun IrSimpleFunction.setOverrides(symbolTable: SymbolTable) {
assert(this.overriddenSymbols.isEmpty())
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/LegacyDescriptorUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/LegacyDescriptorUtils.kt
index c7e7d7c..71742c3 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/LegacyDescriptorUtils.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/LegacyDescriptorUtils.kt
@@ -14,6 +14,7 @@
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.util.OperatorNameConventions
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/descriptors/LegacyDescriptorUtils.kt
/**
* Implementation of given method.
*
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ModuleIndex.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ModuleIndex.kt
similarity index 93%
rename from compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ModuleIndex.kt
rename to compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ModuleIndex.kt
index 8612e31..f56bdf5 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ModuleIndex.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ModuleIndex.kt
@@ -3,7 +3,7 @@
* that can be found in the license/LICENSE.txt file.
*/
-package org.jetbrains.kotlin.ir.backend.js
+package org.jetbrains.kotlin.ir.backend.js.lower.inline
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -14,6 +14,7 @@
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt
class ModuleIndex(val module: IrModuleFragment) {
var currentFile: IrFile? = null
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/NewIrUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/NewIrUtils.kt
similarity index 96%
rename from compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/NewIrUtils.kt
rename to compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/NewIrUtils.kt
index 1c61fa8..5f7782c 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/NewIrUtils.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/NewIrUtils.kt
@@ -3,7 +3,7 @@
* that can be found in the license/LICENSE.txt file.
*/
-package org.jetbrains.kotlin.ir.backend.js
+package org.jetbrains.kotlin.ir.backend.js.lower.inline
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.annotations.AnnotationArgumentVisitor
@@ -23,6 +23,7 @@
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeUtils
+// backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt
fun IrModuleFragment.referenceAllTypeExternalClassifiers(symbolTable: SymbolTable) {
val moduleDescriptor = this.descriptor
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ReturnableBlockLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ReturnableBlockLowering.kt
index 0487ba4..3e1db23 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ReturnableBlockLowering.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/inline/ReturnableBlockLowering.kt
@@ -16,9 +16,7 @@
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrDoWhileLoopImpl
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
-import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
-import kotlin.math.exp
class ReturnableBlockLowering(val context: JsIrBackendContext) : FileLoweringPass {
diff --git a/compiler/testData/codegen/box/typealias/simple.kt b/compiler/testData/codegen/box/typealias/simple.kt
index af66302..9ea176e 100644
--- a/compiler/testData/codegen/box/typealias/simple.kt
+++ b/compiler/testData/codegen/box/typealias/simple.kt
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JS_IR
-
typealias S = String
typealias SF<T> = (T) -> S