diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/descriptorBasedUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/descriptorBasedUtils.kt index 423344e7ec4..bab7c3754a6 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/descriptorBasedUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/descriptorBasedUtils.kt @@ -5,7 +5,12 @@ package org.jetbrains.kotlin.backend.common.ir -import org.jetbrains.kotlin.descriptors.MemberDescriptor +import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.declarations.IrProperty -val IrDeclaration.isExpect get() = descriptor.let { it is MemberDescriptor && it.isExpect } \ No newline at end of file +val IrDeclaration.isExpect + get() = this is IrClass && isExpect || + this is IrFunction && isExpect || + this is IrProperty && isExpect \ No newline at end of file diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrClassBuilder.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrClassBuilder.kt index 27904a6fd0b..257dd31fa3a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrClassBuilder.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrClassBuilder.kt @@ -18,6 +18,7 @@ class IrClassBuilder : IrDeclarationBuilder() { var isData: Boolean = false var isExternal: Boolean = false var isInline: Boolean = false + var isExpect: Boolean = false fun updateFrom(from: IrClass) { super.updateFrom(from) @@ -29,5 +30,6 @@ class IrClassBuilder : IrDeclarationBuilder() { isData = from.isData isExternal = from.isExternal isInline = from.isInline + isExpect = from.isExpect } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFunctionBuilder.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFunctionBuilder.kt index dc5f56738d8..7780cb4ca10 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFunctionBuilder.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFunctionBuilder.kt @@ -22,6 +22,7 @@ class IrFunctionBuilder : IrDeclarationBuilder() { var modality: Modality = Modality.FINAL var isTailrec: Boolean = false var isSuspend: Boolean = false + var isExpect: Boolean = false var isPrimary: Boolean = false @@ -30,6 +31,7 @@ class IrFunctionBuilder : IrDeclarationBuilder() { isInline = from.isInline isExternal = from.isExternal + isExpect = from.isExpect if (from is IrSimpleFunction) { modality = from.modality diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrPropertyBuilder.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrPropertyBuilder.kt index 615cc7e4dbd..6c1fa97b51b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrPropertyBuilder.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrPropertyBuilder.kt @@ -15,4 +15,5 @@ class IrPropertyBuilder : IrDeclarationBuilder() { var isLateinit: Boolean = false var isDelegated: Boolean = false var isExternal: Boolean = false + var isExpect: Boolean = false } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt index 285ccaec3b8..289285db19d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt @@ -38,6 +38,7 @@ interface IrClass : val isData: Boolean val isExternal: Boolean val isInline: Boolean + val isExpect: Boolean val superTypes: MutableList diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt index bc0b175eda8..7400ad2fd4c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt @@ -31,6 +31,8 @@ interface IrFunction : val isInline: Boolean // NB: there's an inline constructor for Array and each primitive array class val isExternal: Boolean + val isExpect: Boolean + var returnType: IrType var dispatchReceiverParameter: IrValueParameter? diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt index d112c11b571..bf2b0145bb5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt @@ -34,6 +34,7 @@ interface IrProperty : val isLateinit: Boolean val isDelegated: Boolean val isExternal: Boolean + val isExpect: Boolean var backingField: IrField? var getter: IrSimpleFunction? diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt index 08e01d227b1..bfc4034a1f8 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt @@ -43,7 +43,8 @@ class IrClassImpl( override val isInner: Boolean, override val isData: Boolean, override val isExternal: Boolean, - override val isInline: Boolean + override val isInline: Boolean, + override val isExpect: Boolean ) : IrDeclarationBase(startOffset, endOffset, origin), IrClass { @@ -64,7 +65,8 @@ class IrClassImpl( isInner = symbol.descriptor.isInner, isData = symbol.descriptor.isData, isExternal = symbol.descriptor.isEffectivelyExternal(), - isInline = symbol.descriptor.isInline + isInline = symbol.descriptor.isInline, + isExpect = symbol.descriptor.isExpect ) init { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt index eb8005f05f5..37315a57467 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt @@ -37,11 +37,14 @@ class IrConstructorImpl( returnType: IrType, isInline: Boolean, isExternal: Boolean, - override val isPrimary: Boolean + override val isPrimary: Boolean, + isExpect: Boolean ) : IrFunctionBase( startOffset, endOffset, origin, name, - visibility, isInline, isExternal, returnType + visibility, + isInline, isExternal, isExpect, + returnType ), IrConstructor { @@ -57,9 +60,10 @@ class IrConstructorImpl( symbol.descriptor.name, symbol.descriptor.visibility, returnType, - symbol.descriptor.isInline, - symbol.descriptor.isEffectivelyExternal(), - symbol.descriptor.isPrimary + isInline = symbol.descriptor.isInline, + isExternal = symbol.descriptor.isEffectivelyExternal(), + isPrimary = symbol.descriptor.isPrimary, + isExpect = symbol.descriptor.isExpect ) { this.body = body } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt index fd53bca1d56..b5aef66d125 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt @@ -34,6 +34,7 @@ abstract class IrFunctionBase( override var visibility: Visibility, override val isInline: Boolean, override val isExternal: Boolean, + override val isExpect: Boolean, returnType: IrType ) : IrDeclarationBase(startOffset, endOffset, origin), diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt index 11b61f28234..4c3335ec6ac 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt @@ -31,9 +31,10 @@ class IrFunctionImpl( isInline: Boolean, isExternal: Boolean, override val isTailrec: Boolean, - override val isSuspend: Boolean + override val isSuspend: Boolean, + isExpect: Boolean ) : - IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, returnType), + IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrSimpleFunction { constructor( @@ -50,10 +51,11 @@ class IrFunctionImpl( visibility, modality, returnType, - symbol.descriptor.isInline, - symbol.descriptor.isExternal, - symbol.descriptor.isTailrec, - symbol.descriptor.isSuspend + isInline = symbol.descriptor.isInline, + isExternal = symbol.descriptor.isExternal, + isTailrec = symbol.descriptor.isTailrec, + isSuspend = symbol.descriptor.isSuspend, + isExpect = symbol.descriptor.isExpect ) override val descriptor: FunctionDescriptor = symbol.descriptor diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt index e9afee2372a..c7f17b67ac3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt @@ -39,8 +39,9 @@ class IrPropertyImpl( override val isVar: Boolean = symbol.descriptor.isVar, override val isConst: Boolean = symbol.descriptor.isConst, override val isLateinit: Boolean = symbol.descriptor.isLateInit, - @Suppress("DEPRECATION") override val isDelegated: Boolean = symbol.descriptor.isDelegated, - override val isExternal: Boolean = symbol.descriptor.isEffectivelyExternal() + override val isDelegated: Boolean = @Suppress("DEPRECATION") symbol.descriptor.isDelegated, + override val isExternal: Boolean = symbol.descriptor.isEffectivelyExternal(), + override val isExpect: Boolean = symbol.descriptor.isExpect ) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt index 038878a305f..01591ac8fae 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyClass.kt @@ -34,6 +34,7 @@ class IrLazyClass( override val isData: Boolean, override val isExternal: Boolean, override val isInline: Boolean, + override val isExpect: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : @@ -57,6 +58,7 @@ class IrLazyClass( isData = symbol.descriptor.isData, isExternal = symbol.descriptor.isEffectivelyExternal(), isInline = symbol.descriptor.isInline, + isExpect = symbol.descriptor.isExpect, stubGenerator = stubGenerator, typeTranslator = TypeTranslator ) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyConstructor.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyConstructor.kt index 404005a8fba..c7da63c237e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyConstructor.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyConstructor.kt @@ -28,12 +28,13 @@ class IrLazyConstructor( isInline: Boolean, isExternal: Boolean, override val isPrimary: Boolean, + isExpect: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : IrLazyFunctionBase( startOffset, endOffset, origin, name, - visibility, isInline, isExternal, + visibility, isInline, isExternal, isExpect, stubGenerator, typeTranslator ), IrConstructor { @@ -49,11 +50,12 @@ class IrLazyConstructor( startOffset, endOffset, origin, symbol, symbol.descriptor.name, symbol.descriptor.visibility, - symbol.descriptor.isInline, - symbol.descriptor.isEffectivelyExternal(), - symbol.descriptor.isPrimary, - stubGenerator, - TypeTranslator + isInline = symbol.descriptor.isInline, + isExternal = symbol.descriptor.isEffectivelyExternal(), + isPrimary = symbol.descriptor.isPrimary, + isExpect = symbol.descriptor.isExpect, + stubGenerator = stubGenerator, + typeTranslator = TypeTranslator ) override val typeParameters: MutableList by lazy { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt index fd2c8671bb1..e7980f40d3c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunction.kt @@ -33,10 +33,11 @@ class IrLazyFunction( isExternal: Boolean, override val isTailrec: Boolean, override val isSuspend: Boolean, + isExpect: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : - IrLazyFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, stubGenerator, typeTranslator), + IrLazyFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, stubGenerator, typeTranslator), IrSimpleFunction { constructor( @@ -51,12 +52,13 @@ class IrLazyFunction( symbol.descriptor.name, symbol.descriptor.visibility, symbol.descriptor.modality, - symbol.descriptor.isInline, - symbol.descriptor.isExternal, - symbol.descriptor.isTailrec, - symbol.descriptor.isSuspend, - stubGenerator, - TypeTranslator + isInline = symbol.descriptor.isInline, + isExternal = symbol.descriptor.isExternal, + isTailrec = symbol.descriptor.isTailrec, + isSuspend = symbol.descriptor.isSuspend, + isExpect = symbol.descriptor.isExpect, + stubGenerator = stubGenerator, + typeTranslator = TypeTranslator ) override val descriptor: FunctionDescriptor = symbol.descriptor @@ -65,13 +67,13 @@ class IrLazyFunction( typeTranslator.buildWithScope(this) { stubGenerator.symbolTable.withScope(descriptor) { val propertyIfAccessor = descriptor.propertyIfAccessor - propertyIfAccessor.typeParameters.mapTo(arrayListOf()) { + propertyIfAccessor.typeParameters.mapTo(arrayListOf()) { typeParameterDescriptor -> if (descriptor != propertyIfAccessor) { - stubGenerator.generateOrGetScopedTypeParameterStub(it).also { - it.parent = this@IrLazyFunction + stubGenerator.generateOrGetScopedTypeParameterStub(typeParameterDescriptor).also { irTypeParameter -> + irTypeParameter.parent = this@IrLazyFunction } } else { - stubGenerator.generateOrGetTypeParameterStub(it) + stubGenerator.generateOrGetTypeParameterStub(typeParameterDescriptor) } } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt index 505a332cccf..e08c8769455 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt @@ -26,6 +26,7 @@ abstract class IrLazyFunctionBase( override var visibility: Visibility, override val isInline: Boolean, override val isExternal: Boolean, + override val isExpect: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt index 068f2b8d0d9..57d407ca63a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt @@ -35,6 +35,7 @@ class IrLazyProperty( override val isLateinit: Boolean, override val isDelegated: Boolean, override val isExternal: Boolean, + override val isExpect: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator, private val bindingContext: BindingContext? = null @@ -59,6 +60,7 @@ class IrLazyProperty( isLateinit = symbol.descriptor.isLateInit, isDelegated = @Suppress("DEPRECATION") symbol.descriptor.isDelegated, isExternal = symbol.descriptor.isEffectivelyExternal(), + isExpect = symbol.descriptor.isExpect, stubGenerator = stubGenerator, typeTranslator = typeTranslator, bindingContext = bindingContext diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 05d2c09dca7..f38f22787dd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -144,7 +144,8 @@ open class DeepCopyIrTreeWithSymbols( declaration.isInner, declaration.isData, declaration.isExternal, - declaration.isInline + declaration.isInline, + declaration.isExpect ).apply { transformAnnotations(declaration) copyTypeParametersFrom(declaration) @@ -164,10 +165,11 @@ open class DeepCopyIrTreeWithSymbols( declaration.visibility, declaration.modality, declaration.returnType, - declaration.isInline, - declaration.isExternal, - declaration.isTailrec, - declaration.isSuspend + isInline = declaration.isInline, + isExternal = declaration.isExternal, + isTailrec = declaration.isTailrec, + isSuspend = declaration.isSuspend, + isExpect = declaration.isExpect ).apply { declaration.overriddenSymbols.mapTo(overriddenSymbols) { symbolRemapper.getReferencedFunction(it) as IrSimpleFunctionSymbol @@ -183,9 +185,10 @@ open class DeepCopyIrTreeWithSymbols( declaration.name, declaration.visibility, declaration.returnType, - declaration.isInline, - declaration.isExternal, - declaration.isPrimary + isInline = declaration.isInline, + isExternal = declaration.isExternal, + isPrimary = declaration.isPrimary, + isExpect = declaration.isExpect ).apply { transformFunctionChildren(declaration) } @@ -215,11 +218,12 @@ open class DeepCopyIrTreeWithSymbols( declaration.name, declaration.visibility, declaration.modality, - declaration.isVar, - declaration.isConst, - declaration.isLateinit, - declaration.isDelegated, - declaration.isExternal + isVar = declaration.isVar, + isConst = declaration.isConst, + isLateinit = declaration.isLateinit, + isDelegated = declaration.isDelegated, + isExpect = declaration.isExpect, + isExternal = declaration.isExternal ).apply { transformAnnotations(declaration) this.backingField = declaration.backingField?.transform() diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt index dc3babd0f0b..013bcad5747 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt @@ -370,7 +370,8 @@ class RenderIrElementVisitor : IrElementVisitor { "tailrec".takeIf { isTailrec }, "inline".takeIf { isInline }, "external".takeIf { isExternal }, - "suspend".takeIf { isSuspend } + "suspend".takeIf { isSuspend }, + "expect".takeIf { isExpect } ) private fun IrFunction.renderTypeParameters(): String = @@ -397,7 +398,8 @@ class RenderIrElementVisitor : IrElementVisitor { renderFlagsList( "inline".takeIf { isInline }, "external".takeIf { isExternal }, - "primary".takeIf { isPrimary } + "primary".takeIf { isPrimary }, + "expect".takeIf { isExpect } ) override fun visitProperty(declaration: IrProperty, data: Nothing?): String = @@ -413,6 +415,7 @@ class RenderIrElementVisitor : IrElementVisitor { "const".takeIf { isConst }, "lateinit".takeIf { isLateinit }, "delegated".takeIf { isDelegated }, + "expect".takeIf { isExpect }, if (isVar) "var" else "val" ) @@ -443,7 +446,8 @@ class RenderIrElementVisitor : IrElementVisitor { "inner".takeIf { isInner }, "data".takeIf { isData }, "external".takeIf { isExternal }, - "inline".takeIf { isInline } + "inline".takeIf { isInline }, + "expect".takeIf { isExpect } ) override fun visitVariable(declaration: IrVariable, data: Nothing?): String = diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectClassInherited.txt b/compiler/testData/ir/irText/declarations/multiplatform/expectClassInherited.txt index 871c246b17e..4eccf30c06d 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectClassInherited.txt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectClassInherited.txt @@ -1,8 +1,8 @@ FILE fqName: fileName:/expectClassInherited.kt - CLASS CLASS name:A modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + CLASS CLASS name:A modality:ABSTRACT visibility:public [expect] superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A - CONSTRUCTOR visibility:protected <> () returnType:.A [primary] - FUN name:foo visibility:public modality:ABSTRACT <> ($this:.A) returnType:kotlin.Unit + CONSTRUCTOR visibility:protected <> () returnType:.A [primary,expect] + FUN name:foo visibility:public modality:ABSTRACT <> ($this:.A) returnType:kotlin.Unit [expect] $this: VALUE_PARAMETER name: type:.A FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean overridden: @@ -17,15 +17,15 @@ FILE fqName: fileName:/expectClassInherited.kt overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any - CLASS CLASS name:B modality:OPEN visibility:public superTypes:[.A] + CLASS CLASS name:B modality:OPEN visibility:public [expect] superTypes:[.A] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.B - CONSTRUCTOR visibility:public <> (i:kotlin.Int) returnType:.B [primary] + CONSTRUCTOR visibility:public <> (i:kotlin.Int) returnType:.B [primary,expect] VALUE_PARAMETER name:i index:0 type:kotlin.Int - FUN name:foo visibility:public modality:OPEN <> ($this:.B) returnType:kotlin.Unit + FUN name:foo visibility:public modality:OPEN <> ($this:.B) returnType:kotlin.Unit [expect] overridden: public abstract fun foo (): kotlin.Unit declared in .A $this: VALUE_PARAMETER name: type:.B - FUN name:bar visibility:public modality:OPEN <> ($this:.B, s:kotlin.String) returnType:kotlin.Unit + FUN name:bar visibility:public modality:OPEN <> ($this:.B, s:kotlin.String) returnType:kotlin.Unit [expect] $this: VALUE_PARAMETER name: type:.B VALUE_PARAMETER name:s index:0 type:kotlin.String FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.txt b/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.txt index fe85c008965..a1cb576f03d 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.txt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.txt @@ -1,5 +1,5 @@ FILE fqName: fileName:/expectedEnumClass.kt - CLASS ENUM_CLASS name:MyEnum modality:FINAL visibility:public superTypes:[kotlin.Enum<.MyEnum>] + CLASS ENUM_CLASS name:MyEnum modality:FINAL visibility:public [expect] superTypes:[kotlin.Enum<.MyEnum>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.MyEnum ENUM_ENTRY name:FOO ENUM_ENTRY name:BAR diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectedSealedClass.txt b/compiler/testData/ir/irText/declarations/multiplatform/expectedSealedClass.txt index 2c26c5982c4..f3956de17f4 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectedSealedClass.txt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectedSealedClass.txt @@ -1,7 +1,7 @@ FILE fqName: fileName:/expectedSealedClass.kt - CLASS CLASS name:Ops modality:SEALED visibility:public superTypes:[kotlin.Any] + CLASS CLASS name:Ops modality:SEALED visibility:public [expect] superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Ops - CONSTRUCTOR visibility:private <> () returnType:.Ops [primary] + CONSTRUCTOR visibility:private <> () returnType:.Ops [primary,expect] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any @@ -15,9 +15,9 @@ FILE fqName: fileName:/expectedSealedClass.kt overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any - CLASS CLASS name:Add modality:FINAL visibility:public superTypes:[.Ops] + CLASS CLASS name:Add modality:FINAL visibility:public [expect] superTypes:[.Ops] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Add - CONSTRUCTOR visibility:public <> () returnType:.Add [primary] + CONSTRUCTOR visibility:public <> () returnType:.Add [primary,expect] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .Ops