[JS IR BE] support multimodule tests

This commit is contained in:
Anton Bannykh
2018-09-17 14:17:29 +03:00
parent 2e709a81fa
commit 0660e4d616
70 changed files with 37 additions and 81 deletions
@@ -49,10 +49,11 @@ fun compile(
files: List<KtFile>, files: List<KtFile>,
configuration: CompilerConfiguration, configuration: CompilerConfiguration,
export: FqName? = null, export: FqName? = null,
dependencies: List<Result> = listOf() dependencies: List<ModuleDescriptor> = listOf(),
irDependencyModules: List<IrModuleFragment> = listOf()
): Result { ): Result {
val analysisResult = val analysisResult =
TopDownAnalyzerFacadeForJS.analyzeFiles(files, project, configuration, dependencies.mapNotNull { it.moduleDescriptor as? ModuleDescriptorImpl }, emptyList()) TopDownAnalyzerFacadeForJS.analyzeFiles(files, project, configuration, dependencies.mapNotNull { it as? ModuleDescriptorImpl }, emptyList())
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
@@ -61,8 +62,6 @@ fun compile(
val psi2IrTranslator = Psi2IrTranslator(configuration.languageVersionSettings) val psi2IrTranslator = Psi2IrTranslator(configuration.languageVersionSettings)
val psi2IrContext = psi2IrTranslator.createGeneratorContext(analysisResult.moduleDescriptor, analysisResult.bindingContext) val psi2IrContext = psi2IrTranslator.createGeneratorContext(analysisResult.moduleDescriptor, analysisResult.bindingContext)
val irDependencyModules = dependencies.map { it.moduleFragment.deepCopyWithSymbols() }
irDependencyModules.forEach { psi2IrContext.symbolTable.loadModule(it)} irDependencyModules.forEach { psi2IrContext.symbolTable.loadModule(it)}
val moduleFragment = psi2IrTranslator.generateModuleFragment(psi2IrContext, files) val moduleFragment = psi2IrTranslator.generateModuleFragment(psi2IrContext, files)
@@ -6,15 +6,13 @@
package org.jetbrains.kotlin.ir.backend.js.lower package org.jetbrains.kotlin.ir.backend.js.lower
import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.ir.irCall
import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrConstructor
import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
@@ -37,22 +37,31 @@ class SecondaryCtorLowering(val context: JsIrBackendContext) {
fun getConstructorProcessorLowering() = object : DeclarationContainerLoweringPass { fun getConstructorProcessorLowering() = object : DeclarationContainerLoweringPass {
override fun lower(irDeclarationContainer: IrDeclarationContainer) { override fun lower(irDeclarationContainer: IrDeclarationContainer) {
irDeclarationContainer.declarations.transformFlat { irDeclarationContainer.declarations.filterIsInstance<IrClass>().forEach { lowerClass(it) }
if (it is IrClass) {
listOf(it) + lowerClass(it)
} else null
}
} }
}::runOnFilePostfix }::runOnFilePostfix
fun getConstructorRedirectorLowering() = object : DeclarationContainerLoweringPass { fun getConstructorRedirectorLowering() = object : DeclarationContainerLoweringPass {
override fun lower(irDeclarationContainer: IrDeclarationContainer) { override fun lower(irDeclarationContainer: IrDeclarationContainer) {
if (irDeclarationContainer is IrClass) {
updateConstructorDeclarations(irDeclarationContainer)
}
for (it in irDeclarationContainer.declarations) { for (it in irDeclarationContainer.declarations) {
it.accept(CallsiteRedirectionTransformer(), null) it.accept(CallsiteRedirectionTransformer(), null)
} }
} }
}::runOnFilePostfix }::runOnFilePostfix
private fun updateConstructorDeclarations(irClass: IrClass) {
irClass.declarations.transformFlat {
if (it is IrConstructor) {
oldCtorToNewMap[it.symbol]?.let { (newInit, newCreate) ->
listOf(newInit.owner, newCreate.owner)
}
} else null
}
}
private fun lowerClass(irClass: IrClass): List<IrSimpleFunction> { private fun lowerClass(irClass: IrClass): List<IrSimpleFunction> {
val className = irClass.name.asString() val className = irClass.name.asString()
val oldConstructors = mutableListOf<IrConstructor>() val oldConstructors = mutableListOf<IrConstructor>()
@@ -91,8 +100,6 @@ class SecondaryCtorLowering(val context: JsIrBackendContext) {
} }
} }
irClass.declarations.removeAll(oldConstructors)
return newConstructors return newConstructors
} }
@@ -1,7 +1,7 @@
// !LANGUAGE: +ReleaseCoroutines // !LANGUAGE: +ReleaseCoroutines
// !API_VERSION: 1.3 // !API_VERSION: 1.3
// IGNORE_BACKEND: NATIVE // IGNORE_BACKEND: NATIVE
// IGNORE_BACKEND: JS, JS_IR // IGNORE_BACKEND: JS
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: NATIVE // IGNORE_BACKEND: NATIVE
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// WITH_COROUTINES // WITH_COROUTINES
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// WITH_COROUTINES // WITH_COROUTINES
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// WITH_COROUTINES // WITH_COROUTINES
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: NATIVE // IGNORE_BACKEND: NATIVE
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: NATIVE // IGNORE_BACKEND: NATIVE
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// WITH_COROUTINES // WITH_COROUTINES
@@ -1,5 +1,5 @@
// WITH_RUNTIME // WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR, JS_IR, NATIVE // IGNORE_BACKEND: JVM_IR, NATIVE
inline class SnekDirection(val direction: Int) { inline class SnekDirection(val direction: Int) {
companion object { companion object {
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
class A { class A {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@PublishedApi @PublishedApi
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -94,7 +94,7 @@ abstract class BasicBoxTest(
doTest(filePath, "OK", MainCallParameters.noCall(), coroutinesPackage) doTest(filePath, "OK", MainCallParameters.noCall(), coroutinesPackage)
} }
fun doTest(filePath: String, expectedResult: String, mainCallParameters: MainCallParameters, coroutinesPackage: String = "") { open fun doTest(filePath: String, expectedResult: String, mainCallParameters: MainCallParameters, coroutinesPackage: String = "") {
val file = File(filePath) val file = File(filePath)
val outputDir = getOutputDir(file) val outputDir = getOutputDir(file)
var fileContent = KotlinTestUtils.doLoadFile(file) var fileContent = KotlinTestUtils.doLoadFile(file)
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.js.test
import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.ir.backend.js.Result import org.jetbrains.kotlin.ir.backend.js.Result
import org.jetbrains.kotlin.ir.backend.js.compile import org.jetbrains.kotlin.ir.backend.js.compile
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.facade.MainCallParameters import org.jetbrains.kotlin.js.facade.MainCallParameters
import org.jetbrains.kotlin.js.facade.TranslationUnit import org.jetbrains.kotlin.js.facade.TranslationUnit
@@ -116,6 +117,13 @@ abstract class BasicIrBoxTest(
override var skipMinification = true override var skipMinification = true
private val compilationCache = mutableMapOf<String, Result>()
override fun doTest(filePath: String, expectedResult: String, mainCallParameters: MainCallParameters, coroutinesPackage: String) {
compilationCache.clear()
super.doTest(filePath, expectedResult, mainCallParameters, coroutinesPackage)
}
override fun translateFiles( override fun translateFiles(
units: List<TranslationUnit>, units: List<TranslationUnit>,
outputFile: File, outputFile: File,
@@ -153,12 +161,19 @@ abstract class BasicIrBoxTest(
runtimeFile.write(runtimeResult!!.generatedCode) runtimeFile.write(runtimeResult!!.generatedCode)
} }
val dependencyPaths = config.configuration[JSConfigurationKeys.LIBRARIES]!!
val dependencies = listOf(runtimeResult!!.moduleDescriptor) + dependencyPaths.mapNotNull { compilationCache[it]?.moduleDescriptor }
val irDependencies = listOf(runtimeResult!!.moduleFragment) + compilationCache.values.map { it.moduleFragment }
val result = compile( val result = compile(
config.project, config.project,
filesToCompile, filesToCompile,
config.configuration, config.configuration,
FqName((testPackage?.let { "$it." } ?: "") + testFunction), FqName((testPackage?.let { "$it." } ?: "") + testFunction),
listOf(runtimeResult!!)) dependencies,
irDependencies)
compilationCache[outputFile.absolutePath.let { it.substring(0, it.length - 2)} + "meta.js"] = result
outputFile.write(result.generatedCode) outputFile.write(result.generatedCode)
} }
@@ -4,7 +4,6 @@
// PROPERTY_WRITE_COUNT: name=local$o count=2 // PROPERTY_WRITE_COUNT: name=local$o count=2
// Unmute when JS_IR supports release coroutines // Unmute when JS_IR supports release coroutines
// IGNORE_BACKEND: JS_IR
import kotlin.coroutines.* import kotlin.coroutines.*
@@ -1,7 +1,6 @@
// EXPECTED_REACHABLE_NODES: 1250 // EXPECTED_REACHABLE_NODES: 1250
// Unmute when JS_IR supports release coroutines // Unmute when JS_IR supports release coroutines
// IGNORE_BACKEND: JS_IR
import kotlin.coroutines.* import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.* import kotlin.coroutines.intrinsics.*
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1289 // EXPECTED_REACHABLE_NODES: 1289
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1291 // EXPECTED_REACHABLE_NODES: 1291
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1292 // EXPECTED_REACHABLE_NODES: 1292
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib1 // MODULE: lib1
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: 1 // MODULE: 1
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1289 // EXPECTED_REACHABLE_NODES: 1289
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1284 // EXPECTED_REACHABLE_NODES: 1284
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1286 // EXPECTED_REACHABLE_NODES: 1286
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1285 // EXPECTED_REACHABLE_NODES: 1285
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1189 // EXPECTED_REACHABLE_NODES: 1189
// MODULE: lib // MODULE: lib
@@ -1,5 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1192 // EXPECTED_REACHABLE_NODES: 1192
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
-1
View File
@@ -1,5 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1269 // EXPECTED_REACHABLE_NODES: 1269
// IGNORE_BACKEND: JS_IR
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1286 // EXPECTED_REACHABLE_NODES: 1286
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1285 // EXPECTED_REACHABLE_NODES: 1285
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1285 // EXPECTED_REACHABLE_NODES: 1285
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1294 // EXPECTED_REACHABLE_NODES: 1294
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 5901 // EXPECTED_REACHABLE_NODES: 5901
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1282 // EXPECTED_REACHABLE_NODES: 1282
// MODULE: lib // MODULE: lib
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1289 // EXPECTED_REACHABLE_NODES: 1289
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1229 // EXPECTED_REACHABLE_NODES: 1229
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1286 // EXPECTED_REACHABLE_NODES: 1286
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1288 // EXPECTED_REACHABLE_NODES: 1288
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1304 // EXPECTED_REACHABLE_NODES: 1304
// MODULE: m3 // MODULE: m3
// FILE: m3.kt // FILE: m3.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1300 // EXPECTED_REACHABLE_NODES: 1300
// MODULE: main(module2) // MODULE: main(module2)
// FILE: main.kt // FILE: main.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1302 // EXPECTED_REACHABLE_NODES: 1302
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1291 // EXPECTED_REACHABLE_NODES: 1291
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1284 // EXPECTED_REACHABLE_NODES: 1284
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1282 // EXPECTED_REACHABLE_NODES: 1282
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1319 // EXPECTED_REACHABLE_NODES: 1319
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib1 // MODULE: lib1
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1281 // EXPECTED_REACHABLE_NODES: 1281
// MODULE: lib // MODULE: lib
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1286 // EXPECTED_REACHABLE_NODES: 1286
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1280 // EXPECTED_REACHABLE_NODES: 1280
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1281 // EXPECTED_REACHABLE_NODES: 1281
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1319 // EXPECTED_REACHABLE_NODES: 1319
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: main(module1) // MODULE: main(module1)
// FILE: main.kt // FILE: main.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1304 // EXPECTED_REACHABLE_NODES: 1304
// MODULE: lib1 // MODULE: lib1
// FILE: lib1.kt // FILE: lib1.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1285 // EXPECTED_REACHABLE_NODES: 1285
// MODULE: main(module1) // MODULE: main(module1)
// FILE: main.kt // FILE: main.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1282 // EXPECTED_REACHABLE_NODES: 1282
// MODULE: #my-libr@ry // MODULE: #my-libr@ry
// FILE: bar.kt // FILE: bar.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: module-1 // MODULE: module-1
// FILE: bar.kt // FILE: bar.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1283 // EXPECTED_REACHABLE_NODES: 1283
// MODULE: module1 // MODULE: module1
// FILE: bar.kt // FILE: bar.kt
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1287 // EXPECTED_REACHABLE_NODES: 1287
// MODULE: lib // MODULE: lib
// FILE: lib.kt // FILE: lib.kt