JS_IR: isExpect
This commit is contained in:
+4
-3
@@ -96,9 +96,10 @@ class JsDeclarationFactory : DeclarationFactory {
|
||||
oldConstructor.name,
|
||||
oldConstructor.visibility,
|
||||
oldConstructor.returnType,
|
||||
oldConstructor.isInline,
|
||||
oldConstructor.isExternal,
|
||||
oldConstructor.isPrimary
|
||||
isInline = oldConstructor.isInline,
|
||||
isExternal = oldConstructor.isExternal,
|
||||
isPrimary = oldConstructor.isPrimary,
|
||||
isExpect = oldConstructor.isExpect
|
||||
).also {
|
||||
descriptor.bind(it)
|
||||
it.parent = oldConstructor.parent
|
||||
|
||||
+12
-8
@@ -48,9 +48,11 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
|
||||
|
||||
val constructorSymbol = closureBoxConstructorDeclaration.symbol
|
||||
|
||||
val irCall = IrConstructorCallImpl.fromSymbolDescriptor(initializer.startOffset, initializer.endOffset, closureBoxType, constructorSymbol).apply {
|
||||
putValueArgument(0, initializer)
|
||||
}
|
||||
val irCall =
|
||||
IrConstructorCallImpl.fromSymbolDescriptor(initializer.startOffset, initializer.endOffset, closureBoxType, constructorSymbol)
|
||||
.apply {
|
||||
putValueArgument(0, initializer)
|
||||
}
|
||||
|
||||
val descriptor = WrappedVariableDescriptor()
|
||||
return IrVariableImpl(
|
||||
@@ -127,7 +129,8 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
|
||||
val descriptor = WrappedClassDescriptor()
|
||||
val declaration = IrClassImpl(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, IrClassSymbolImpl(descriptor),
|
||||
Name.identifier(boxTypeName), ClassKind.CLASS, Visibilities.PUBLIC, Modality.FINAL, false, false, false, false, false
|
||||
Name.identifier(boxTypeName), ClassKind.CLASS, Visibilities.PUBLIC, Modality.FINAL,
|
||||
isCompanion = false, isInner = false, isData = false, isExternal = false, isInline = false, isExpect = false
|
||||
)
|
||||
|
||||
descriptor.bind(declaration)
|
||||
@@ -135,9 +138,9 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
|
||||
// TODO: substitute
|
||||
closureBoxType = IrSimpleTypeImpl(declaration.symbol, false, emptyList(), emptyList())
|
||||
declaration.thisReceiver =
|
||||
JsIrBuilder.buildValueParameter(Name.special("<this>"), -1, closureBoxType, IrDeclarationOrigin.INSTANCE_RECEIVER).apply {
|
||||
parent = declaration
|
||||
}
|
||||
JsIrBuilder.buildValueParameter(Name.special("<this>"), -1, closureBoxType, IrDeclarationOrigin.INSTANCE_RECEIVER).apply {
|
||||
parent = declaration
|
||||
}
|
||||
implicitDeclarationsFile.declarations += declaration
|
||||
|
||||
return declaration
|
||||
@@ -171,7 +174,8 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
|
||||
|
||||
val declaration = IrConstructorImpl(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, symbol,
|
||||
Name.special("<init>"), Visibilities.PUBLIC, closureBoxClassDeclaration.defaultType, false, false, true
|
||||
Name.special("<init>"), Visibilities.PUBLIC, closureBoxClassDeclaration.defaultType,
|
||||
isInline = false, isExternal = false, isPrimary = true, isExpect = false
|
||||
)
|
||||
|
||||
descriptor.bind(declaration)
|
||||
|
||||
@@ -93,6 +93,7 @@ object JsIrBuilder {
|
||||
isExternal: Boolean = false,
|
||||
isTailrec: Boolean = false,
|
||||
isSuspend: Boolean = false,
|
||||
isExpect: Boolean = false,
|
||||
origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION
|
||||
) = buildFunction(
|
||||
Name.identifier(name),
|
||||
@@ -100,11 +101,12 @@ object JsIrBuilder {
|
||||
parent,
|
||||
visibility,
|
||||
modality,
|
||||
isInline,
|
||||
isExternal,
|
||||
isTailrec,
|
||||
isSuspend,
|
||||
origin
|
||||
isInline = isInline,
|
||||
isExternal = isExternal,
|
||||
isTailrec = isTailrec,
|
||||
isSuspend = isSuspend,
|
||||
isExpect = isExpect,
|
||||
origin = origin
|
||||
)
|
||||
|
||||
fun buildFunction(
|
||||
@@ -117,6 +119,7 @@ object JsIrBuilder {
|
||||
isExternal: Boolean = false,
|
||||
isTailrec: Boolean = false,
|
||||
isSuspend: Boolean = false,
|
||||
isExpect: Boolean = false,
|
||||
origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION
|
||||
): IrSimpleFunction {
|
||||
val descriptor = WrappedSimpleFunctionDescriptor()
|
||||
@@ -129,10 +132,11 @@ object JsIrBuilder {
|
||||
visibility,
|
||||
modality,
|
||||
returnType,
|
||||
isInline,
|
||||
isExternal,
|
||||
isTailrec,
|
||||
isSuspend
|
||||
isInline = isInline,
|
||||
isExternal = isExternal,
|
||||
isTailrec = isTailrec,
|
||||
isSuspend = isSuspend,
|
||||
isExpect = isExpect
|
||||
).also {
|
||||
descriptor.bind(it)
|
||||
it.parent = parent
|
||||
|
||||
+6
-6
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.backend.common.lower.irBlockBody
|
||||
import org.jetbrains.kotlin.backend.common.lower.irNot
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
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.functionSignature
|
||||
@@ -126,11 +125,12 @@ class BridgesConstruction(val context: CommonBackendContext) : ClassLoweringPass
|
||||
function.parent,
|
||||
bridge.visibility,
|
||||
bridge.modality, // TODO: should copy modality?
|
||||
bridge.isInline,
|
||||
bridge.isExternal,
|
||||
bridge.isTailrec,
|
||||
bridge.isSuspend,
|
||||
origin
|
||||
isInline = bridge.isInline,
|
||||
isExternal = bridge.isExternal,
|
||||
isTailrec = bridge.isTailrec,
|
||||
isSuspend = bridge.isSuspend,
|
||||
isExpect = bridge.isExpect,
|
||||
origin = origin
|
||||
).apply {
|
||||
copyTypeParametersFrom(bridge)
|
||||
// TODO: should dispatch receiver be copied?
|
||||
|
||||
+1
-1
@@ -104,7 +104,7 @@ class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweri
|
||||
IrSimpleFunctionSymbolImpl(descriptor),
|
||||
Name.identifier(name),
|
||||
Visibilities.PRIVATE, Modality.FINAL, returnType,
|
||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false
|
||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false
|
||||
).also {
|
||||
descriptor.bind(it)
|
||||
it.parent = irScript
|
||||
|
||||
+4
-3
@@ -192,9 +192,10 @@ class EnumClassConstructorTransformer(val context: CommonBackendContext, private
|
||||
enumConstructor.name,
|
||||
enumConstructor.visibility,
|
||||
enumConstructor.returnType,
|
||||
enumConstructor.isInline,
|
||||
enumConstructor.isExternal,
|
||||
enumConstructor.isPrimary
|
||||
isInline = enumConstructor.isInline,
|
||||
isExternal = enumConstructor.isExternal,
|
||||
isPrimary = enumConstructor.isPrimary,
|
||||
isExpect = enumConstructor.isExpect
|
||||
).apply {
|
||||
loweredConstructorDescriptor.bind(this)
|
||||
parent = enumClass
|
||||
|
||||
+1
-1
@@ -163,7 +163,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : FileLoweringPass
|
||||
startOffset, endOffset, origin,
|
||||
symbol, name, visibility, modality,
|
||||
returnType,
|
||||
isInline, isExternal, isTailrec, isSuspend
|
||||
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect
|
||||
).also {
|
||||
descriptor.bind(it)
|
||||
it.parent = parent
|
||||
|
||||
Reference in New Issue
Block a user