[JS IR] Review remarks
- Move origin to common place - Add comments and todo about solution - Remove MODULE directive from tests - Add test with in-place using of js function
This commit is contained in:
committed by
TeamCityServer
parent
507516e44d
commit
74d1812461
@@ -386,11 +386,19 @@ fun usefulDeclarations(roots: Iterable<IrDeclaration>, context: JsIrBackendConte
|
||||
val ref = expression.getTypeArgument(0)!!.classifierOrFail.owner as IrDeclaration
|
||||
ref.enqueue("intrinsic: jsClass")
|
||||
referencedJsClasses += ref
|
||||
if (expression.origin == ClassReferenceLowering.Companion.CLASS_REFERENCE) {
|
||||
// When class reference provided as parameter to external function
|
||||
// It can be instantiated by external JS script
|
||||
// Need to leave constructor for this
|
||||
// https://youtrack.jetbrains.com/issue/KT-46672
|
||||
// TODO: Possibly solution with origin is not so good
|
||||
// There is option with applying this hack to jsGetKClass
|
||||
if (expression.origin == JsLoweredDeclarationOrigin.CLASS_REFERENCE) {
|
||||
// Maybe we need to filter primary constructor
|
||||
// Although at this time, we should have only primary constructor
|
||||
(ref as IrClass)
|
||||
.constructors
|
||||
.forEach {
|
||||
it.enqueue("intrinsic: jsClass constructor")
|
||||
it.enqueue("intrinsic: jsClass (constructor)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,5 @@ object JsLoweredDeclarationOrigin : IrDeclarationOrigin {
|
||||
object BRIDGE_WITHOUT_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITHOUT_STABLE_NAME")
|
||||
object OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION")
|
||||
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
|
||||
object CLASS_REFERENCE : IrStatementOriginImpl("CLASS_REFERENCE")
|
||||
}
|
||||
|
||||
+2
-5
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.BodyLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext
|
||||
import org.jetbrains.kotlin.backend.common.ir.Symbols
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsLoweredDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||
import org.jetbrains.kotlin.ir.backend.js.utils.toJsArrayLiteral
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -130,7 +131,7 @@ class ClassReferenceLowering(val context: JsIrBackendContext) : BodyLoweringPass
|
||||
JsIrBuilder.buildCall(
|
||||
intrinsics.jsClass,
|
||||
typeArguments = listOf(type),
|
||||
origin = CLASS_REFERENCE
|
||||
origin = JsLoweredDeclarationOrigin.CLASS_REFERENCE
|
||||
)
|
||||
|
||||
private fun buildCall(name: IrSimpleFunctionSymbol, vararg args: IrExpression): IrExpression =
|
||||
@@ -256,9 +257,5 @@ class ClassReferenceLowering(val context: JsIrBackendContext) : BodyLoweringPass
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
companion object {
|
||||
object CLASS_REFERENCE : IrStatementOriginImpl("CLASS_REFERENCE")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user