[JS IR] Don't generate "import" statements for external interfaces

#KT-40964 fixed
This commit is contained in:
Zalim Bashorov
2020-08-28 02:02:00 +03:00
parent ba846830c9
commit 606232a584
6 changed files with 128 additions and 6 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -15,11 +15,10 @@ import org.jetbrains.kotlin.ir.backend.js.export.ExportedModule
import org.jetbrains.kotlin.ir.backend.js.export.toTypeScript
import org.jetbrains.kotlin.ir.backend.js.lower.StaticMembersLowering
import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.path
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.ir.util.isInterface
import org.jetbrains.kotlin.js.backend.ast.*
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.utils.DFS
@@ -358,6 +357,7 @@ class IrModuleToJsTransformer(
file.declarations
.asSequence()
.filterIsInstance<IrDeclarationWithName>()
.filter { !(it is IrClass && it.isInterface && it.isEffectivelyExternal()) }
.forEach { declaration ->
val declName = getNameForExternalDeclaration(declaration)
importStatements.add(
@@ -417,4 +417,4 @@ class IrModuleToJsTransformer(
this += statements
endRegion()
}
}
}