From 66b63c4296f7235f533c05186bc94b7521a7bfab Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 17 Oct 2019 13:28:09 +0300 Subject: [PATCH] JS_IR: isExpect --- .../ir/backend/js/JsDeclarationFactory.kt | 7 +++--- .../ir/backend/js/JsSharedVariablesManager.kt | 20 ++++++++++------- .../kotlin/ir/backend/js/ir/IrBuilder.kt | 22 +++++++++++-------- .../backend/js/lower/BridgesConstruction.kt | 12 +++++----- .../js/lower/CreateScriptFunctionsPhase.kt | 2 +- .../ir/backend/js/lower/EnumClassLowering.kt | 7 +++--- .../js/lower/PrivateMembersLowering.kt | 2 +- 7 files changed, 41 insertions(+), 31 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt index 6525e19bdb0..592c43cbc41 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt index b13b06d6d1f..64b20940247 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt @@ -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(""), -1, closureBoxType, IrDeclarationOrigin.INSTANCE_RECEIVER).apply { - parent = declaration - } + JsIrBuilder.buildValueParameter(Name.special(""), -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(""), Visibilities.PUBLIC, closureBoxClassDeclaration.defaultType, false, false, true + Name.special(""), Visibilities.PUBLIC, closureBoxClassDeclaration.defaultType, + isInline = false, isExternal = false, isPrimary = true, isExpect = false ) descriptor.bind(declaration) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt index 17f1b574ceb..636d4f02437 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt index dd0e9c30f56..b59da838f54 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt @@ -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? diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt index 3a0941bd2b9..93661acd34e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt index c2ded075a6c..bc80d0dcafa 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt index 99bcc83a645..61606511cfa 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt @@ -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