From 6bdc9ee65b88a45d0756fa73a2bd58e6f68a66c7 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 17 Oct 2019 13:07:59 +0300 Subject: [PATCH] IR BE common: isExpect --- .../kotlin/backend/common/ir/IrUtils.kt | 21 +++++++++------- .../lower/AbstractSuspendFunctionsLowering.kt | 24 ++++++++++++------- .../lower/DefaultArgumentStubGenerator.kt | 20 +++++++++------- .../common/lower/InitializersLowering.kt | 6 +++-- .../common/lower/LocalDeclarationsLowering.kt | 16 ++++++++----- .../common/lower/PropertiesLowering.kt | 4 +--- .../declarations/declarationBuilders.kt | 10 ++++---- 7 files changed, 60 insertions(+), 41 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index 32036c3e0ff..263a982844f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -67,9 +67,10 @@ fun IrClass.addSimpleDelegatingConstructor( superConstructor.name, superConstructor.visibility, defaultType, - false, - false, - isPrimary + isInline = false, + isExternal = false, + isPrimary = isPrimary, + isExpect = false ).also { constructor -> descriptor.bind(constructor) constructor.parent = this @@ -481,10 +482,11 @@ fun IrClass.addFakeOverrides() { Visibilities.INHERITED, irFunction.modality, irFunction.returnType, - irFunction.isInline, - irFunction.isExternal, - irFunction.isTailrec, - irFunction.isSuspend + isInline = irFunction.isInline, + isExternal = irFunction.isExternal, + isTailrec = irFunction.isTailrec, + isSuspend = irFunction.isSuspend, + isExpect = irFunction.isExpect ).apply { descriptor.bind(this) parent = this@addFakeOverrides @@ -521,7 +523,10 @@ fun createStaticFunctionWithReceivers( modality, oldFunction.returnType, isInline = oldFunction.isInline, - isExternal = false, isTailrec = false, isSuspend = oldFunction.isSuspend + isExternal = false, + isTailrec = false, + isSuspend = oldFunction.isSuspend, + isExpect = oldFunction.isExpect ).apply { descriptor.bind(this) parent = irParent diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt index b68e3ca7b77..6d5cf6c751f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt @@ -290,7 +290,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isInner = false, isData = false, isExternal = false, - isInline = false + isInline = false, + isExpect = false ).apply { d.bind(this) parent = irFunction.parent @@ -392,7 +393,8 @@ abstract class AbstractSuspendFunctionsLowering(val co coroutineClass.defaultType, isInline = false, isExternal = false, - isPrimary = true + isPrimary = true, + isExpect = false ).apply { d.bind(this) parent = coroutineClass @@ -437,7 +439,8 @@ abstract class AbstractSuspendFunctionsLowering(val co coroutineClass.defaultType, isInline = false, isExternal = false, - isPrimary = false + isPrimary = false, + isExpect = false ).apply { d.bind(this) parent = coroutineClass @@ -484,7 +487,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isInline = false, isExternal = false, isTailrec = false, - isSuspend = false + isSuspend = false, + isExpect = false ).apply { d.bind(this) parent = coroutineClass @@ -549,7 +553,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isInline = false, isExternal = false, isTailrec = false, - isSuspend = true + isSuspend = true, + isExpect = false ).apply { d.bind(this) parent = coroutineClass @@ -603,10 +608,11 @@ abstract class AbstractSuspendFunctionsLowering(val co stateMachineFunction.visibility, Modality.FINAL, context.irBuiltIns.anyNType, - stateMachineFunction.isInline, - stateMachineFunction.isExternal, - stateMachineFunction.isTailrec, - stateMachineFunction.isSuspend + isInline = stateMachineFunction.isInline, + isExternal = stateMachineFunction.isExternal, + isTailrec = stateMachineFunction.isTailrec, + isSuspend = stateMachineFunction.isSuspend, + isExpect = stateMachineFunction.isExpect ).apply { d.bind(this) parent = coroutineClass diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt index 9985d183e3f..16f3160aae6 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt @@ -493,9 +493,10 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati irFunction.name, irFunction.visibility, irFunction.returnType, - irFunction.isInline, - false, - false + isInline = irFunction.isInline, + isExternal = false, + isPrimary = false, + isExpect = false ).also { descriptor.bind(it) it.parent = irFunction.parent @@ -516,10 +517,11 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati irFunction.visibility, Modality.FINAL, irFunction.returnType, - irFunction.isInline, - false, - false, - irFunction.isSuspend + isInline = irFunction.isInline, + isExternal = false, + isTailrec = false, + isSuspend = irFunction.isSuspend, + isExpect = irFunction.isExpect ).also { descriptor.bind(it) it.parent = irFunction.parent @@ -551,8 +553,8 @@ private fun IrFunction.valueParameter(index: Int, name: Name, type: IrType): IrV index, type, null, - false, - false + isCrossinline = false, + isNoinline = false ).also { parameterDescriptor.bind(it) it.parent = this diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt index 87f3d600629..69979fedd2f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt @@ -137,7 +137,8 @@ class InitializersLowering( // TODO: mark as synthesized val staticInitializerDescriptor = WrappedSimpleFunctionDescriptor() val staticInitializer = IrFunctionImpl( - irClass.startOffset, irClass.endOffset, + irClass.startOffset, + irClass.endOffset, declarationOrigin, IrSimpleFunctionSymbolImpl(staticInitializerDescriptor), clinitName, @@ -147,7 +148,8 @@ class InitializersLowering( isInline = false, isExternal = false, isTailrec = false, - isSuspend = false + isSuspend = false, + isExpect = false ).apply { staticInitializerDescriptor.bind(this) body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset, diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index ae7fcbce095..711687101b2 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -518,10 +518,11 @@ class LocalDeclarationsLowering( Visibilities.PRIVATE, Modality.FINAL, oldDeclaration.returnType, - oldDeclaration.isInline, - oldDeclaration.isExternal, - oldDeclaration.isTailrec, - oldDeclaration.isSuspend + isInline = oldDeclaration.isInline, + isExternal = oldDeclaration.isExternal, + isTailrec = oldDeclaration.isTailrec, + isSuspend = oldDeclaration.isSuspend, + isExpect = oldDeclaration.isExpect ) newDescriptor.bind(newDeclaration) @@ -611,8 +612,11 @@ class LocalDeclarationsLowering( val newDeclaration = IrConstructorImpl( oldDeclaration.startOffset, oldDeclaration.endOffset, oldDeclaration.origin, - newSymbol, oldDeclaration.name, loweredConstructorVisibility, oldDeclaration.returnType, oldDeclaration.isInline, - oldDeclaration.isExternal, oldDeclaration.isPrimary + newSymbol, oldDeclaration.name, loweredConstructorVisibility, oldDeclaration.returnType, + isInline = oldDeclaration.isInline, + isExternal = oldDeclaration.isExternal, + isPrimary = oldDeclaration.isPrimary, + isExpect = oldDeclaration.isExpect ) newDescriptor.bind(newDeclaration) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt index a7c1b8f7a4e..b37ca138cc4 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.BackendContext import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.backend.common.ir.copyTo -import org.jetbrains.kotlin.backend.common.ir.copyTypeParametersFrom import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.IrElement @@ -23,7 +22,6 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl import org.jetbrains.kotlin.ir.types.classifierOrFail import org.jetbrains.kotlin.ir.types.typeWith import org.jetbrains.kotlin.ir.util.isEffectivelyExternal -import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat import org.jetbrains.kotlin.ir.visitors.* import org.jetbrains.kotlin.name.Name @@ -87,7 +85,7 @@ class PropertiesLowering( return IrFunctionImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name), declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType, - isInline = false, isExternal = false, isTailrec = false, isSuspend = false + isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false ).apply { descriptor.bind(this) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt index 405c6a449cb..e4151b6e7d4 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt @@ -26,7 +26,8 @@ fun IrClassBuilder.buildClass(): IrClass { return IrClassImpl( startOffset, endOffset, origin, IrClassSymbolImpl(wrappedDescriptor), - name, kind, visibility, modality, isCompanion, isInner, isData, isExternal, isInline + name, kind, visibility, modality, + isCompanion = isCompanion, isInner = isInner, isData = isData, isExternal = isExternal, isInline = isInline, isExpect = isExpect ).also { wrappedDescriptor.bind(it) } @@ -74,7 +75,8 @@ fun IrPropertyBuilder.buildProperty(): IrProperty { return IrPropertyImpl( startOffset, endOffset, origin, IrPropertySymbolImpl(wrappedDescriptor), - name, visibility, modality, isVar, isConst, isLateinit, isDelegated, isExternal + name, visibility, modality, + isVar = isVar, isConst = isConst, isLateinit = isLateinit, isDelegated = isDelegated, isExpect = isExpect, isExternal = isExternal ).also { wrappedDescriptor.bind(it) } @@ -121,7 +123,7 @@ fun IrFunctionBuilder.buildFun(originalDescriptor: FunctionDescriptor? = null): startOffset, endOffset, origin, IrSimpleFunctionSymbolImpl(wrappedDescriptor), name, visibility, modality, returnType, - isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend + isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect ).also { wrappedDescriptor.bind(it) } @@ -134,7 +136,7 @@ fun IrFunctionBuilder.buildConstructor(): IrConstructorImpl { IrConstructorSymbolImpl(wrappedDescriptor), Name.special(""), visibility, returnType, - isInline = isInline, isExternal = isExternal, isPrimary = isPrimary + isInline = isInline, isExternal = isExternal, isPrimary = isPrimary, isExpect = isExpect ).also { wrappedDescriptor.bind(it) }