~ Traverse stdlib declarations
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 4c2221a..8e96cdf 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
@@ -9,16 +9,15 @@
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.backend.js.export.isExported
import org.jetbrains.kotlin.ir.backend.js.lower.moveBodilessDeclarationsToSeparatePlace
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer
import org.jetbrains.kotlin.ir.backend.js.utils.JsMainFunctionDetector
import org.jetbrains.kotlin.ir.backend.js.utils.NameTables
+import org.jetbrains.kotlin.ir.backend.js.utils.getJsNameOrKotlinName
import org.jetbrains.kotlin.ir.backend.js.utils.isJsExport
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName
-import org.jetbrains.kotlin.ir.declarations.IrField
-import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
-import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
+import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
@@ -72,6 +71,43 @@
ExternalDependenciesGenerator(symbolTable, irProviders).generateUnboundSymbolsAsDependencies()
}
+ fun processDeclaration(declaration: IrDeclaration) {
+ if (declaration !is IrDeclarationWithName) return
+ if (declaration !is IrDeclarationWithVisibility || declaration.visibility != Visibilities.PUBLIC) return
+ if (!declaration.isEffectivelyExternal()) return
+
+ val name = declaration.name
+ val jsNameOrKotlinName = declaration.getJsNameOrKotlinName()
+
+ when (declaration) {
+ is IrProperty -> {
+ val propType = declaration.getter?.returnType
+ }
+ is IrConstructor -> {
+
+ }
+ is IrSimpleFunction -> {
+ val returnType = declaration.returnType
+ val typeParameters = declaration.typeParameters
+ val valueParameters = declaration.valueParameters
+ }
+ is IrClass -> {
+ for (member in declaration.declarations) {
+ processDeclaration(member)
+ }
+ }
+ }
+ }
+
+ val stdlibModule = dependencyModules.single { it.descriptor.name.asString() == "<kotlin>" }
+ for (file in stdlibModule.files) {
+ val fileName = file.name
+ val packageName = file.fqName
+ for (declaration in file.declarations) {
+ processDeclaration(declaration)
+ }
+ }
+
val allModules = when (mainModule) {
is MainModule.SourceFiles -> dependencyModules + listOf(moduleFragment)
is MainModule.Klib -> dependencyModules
diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt
index 802ef2c..d0bd9bb 100644
--- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt
+++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt
@@ -687,7 +687,7 @@
if (exportedDependencies.contains(moduleDescriptor)) {
DeserializationStrategy.ALL
} else {
- DeserializationStrategy.EXPLICITLY_EXPORTED
+ DeserializationStrategy.ALL
}
return deserializeIrModuleHeader(moduleDescriptor, deserializationStrategy)
}