Add IrClass.irInline
This commit is contained in:
@@ -35,6 +35,7 @@ interface IrClass : IrSymbolDeclaration<IrClassSymbol>, IrDeclarationContainer,
|
|||||||
val isInner: Boolean
|
val isInner: Boolean
|
||||||
val isData: Boolean
|
val isData: Boolean
|
||||||
val isExternal: Boolean
|
val isExternal: Boolean
|
||||||
|
val isInline: Boolean
|
||||||
|
|
||||||
val superTypes: MutableList<IrType>
|
val superTypes: MutableList<IrType>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ class IrClassImpl(
|
|||||||
override val isCompanion: Boolean,
|
override val isCompanion: Boolean,
|
||||||
override val isInner: Boolean,
|
override val isInner: Boolean,
|
||||||
override val isData: Boolean,
|
override val isData: Boolean,
|
||||||
override val isExternal: Boolean
|
override val isExternal: Boolean,
|
||||||
|
override val isInline: Boolean
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase(startOffset, endOffset, origin),
|
IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
IrClass {
|
IrClass {
|
||||||
@@ -61,7 +62,8 @@ class IrClassImpl(
|
|||||||
isCompanion = symbol.descriptor.isCompanionObject,
|
isCompanion = symbol.descriptor.isCompanionObject,
|
||||||
isInner = symbol.descriptor.isInner,
|
isInner = symbol.descriptor.isInner,
|
||||||
isData = symbol.descriptor.isData,
|
isData = symbol.descriptor.isData,
|
||||||
isExternal = symbol.descriptor.isEffectivelyExternal()
|
isExternal = symbol.descriptor.isEffectivelyExternal(),
|
||||||
|
isInline = symbol.descriptor.isInline
|
||||||
)
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class IrLazyClass(
|
|||||||
override val isInner: Boolean,
|
override val isInner: Boolean,
|
||||||
override val isData: Boolean,
|
override val isData: Boolean,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
|
override val isInline: Boolean,
|
||||||
stubGenerator: DeclarationStubGenerator,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
typeTranslator: TypeTranslator
|
typeTranslator: TypeTranslator
|
||||||
) :
|
) :
|
||||||
@@ -56,6 +57,7 @@ class IrLazyClass(
|
|||||||
isInner = symbol.descriptor.isInner,
|
isInner = symbol.descriptor.isInner,
|
||||||
isData = symbol.descriptor.isData,
|
isData = symbol.descriptor.isData,
|
||||||
isExternal = symbol.descriptor.isEffectivelyExternal(),
|
isExternal = symbol.descriptor.isEffectivelyExternal(),
|
||||||
|
isInline = symbol.descriptor.isInline,
|
||||||
stubGenerator = stubGenerator,
|
stubGenerator = stubGenerator,
|
||||||
typeTranslator = TypeTranslator
|
typeTranslator = TypeTranslator
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -139,7 +139,8 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
|||||||
"companion".takeIf { isCompanion },
|
"companion".takeIf { isCompanion },
|
||||||
"inner".takeIf { isInner },
|
"inner".takeIf { isInner },
|
||||||
"data".takeIf { isData },
|
"data".takeIf { isData },
|
||||||
"external".takeIf { isExternal }
|
"external".takeIf { isExternal },
|
||||||
|
"inline".takeIf { isInline }
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
|
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// !LANGUAGE: +InlineClasses
|
||||||
|
|
||||||
|
inline class Test(val x: Int)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
FILE fqName:<root> fileName:/inlineClass.kt
|
||||||
|
CLASS CLASS name:Test modality:FINAL visibility:public flags:inline superTypes:[kotlin.Any]
|
||||||
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:Test flags:
|
||||||
|
CONSTRUCTOR visibility:public <> (x:kotlin.Int) returnType:Test flags:primary
|
||||||
|
VALUE_PARAMETER name:x index:0 type:kotlin.Int flags:
|
||||||
|
BLOCK_BODY
|
||||||
|
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor='Test'
|
||||||
|
PROPERTY name:x visibility:public modality:FINAL flags:val
|
||||||
|
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||||
|
EXPRESSION_BODY
|
||||||
|
GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:Test) returnType:kotlin.Int flags:
|
||||||
|
correspondingProperty: PROPERTY name:x visibility:public modality:FINAL flags:val
|
||||||
|
$this: VALUE_PARAMETER name:<this> type:Test flags:
|
||||||
|
BLOCK_BODY
|
||||||
|
RETURN type=kotlin.Nothing from='<get-x>(): Int'
|
||||||
|
GET_FIELD 'x: Int' type=kotlin.Int origin=null
|
||||||
|
receiver: GET_VAR 'this@Test: Test' type=Test origin=null
|
||||||
+8
-8
@@ -99,35 +99,35 @@ FILE fqName:<root> fileName:/signedToUnsignedConversions_test.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL 'takeUByte(UByte): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUByte(UByte): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
u: TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UByte>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UByte>]
|
||||||
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeUByte(UByte): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUByte(UByte): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
u: TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UByte>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UByte>]
|
||||||
CALL '<get-EXPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-EXPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeUShort(UShort): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUShort(UShort): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.UShort origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UShort
|
u: TYPE_OP type=kotlin.UShort origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UShort
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UShort modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UShort>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UShort modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UShort>]
|
||||||
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeUShort(UShort): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUShort(UShort): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.UShort origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UShort
|
u: TYPE_OP type=kotlin.UShort origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UShort
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UShort modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UShort>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UShort modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UShort>]
|
||||||
CALL '<get-BIGGER_THAN_UBYTE>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-BIGGER_THAN_UBYTE>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeUInt(UInt): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUInt(UInt): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.UInt origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UInt
|
u: TYPE_OP type=kotlin.UInt origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UInt
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UInt modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UInt>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UInt modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UInt>]
|
||||||
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeULong(ULong): Unit' type=kotlin.Unit origin=null
|
CALL 'takeULong(ULong): Unit' type=kotlin.Unit origin=null
|
||||||
u: TYPE_OP type=kotlin.ULong origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.ULong
|
u: TYPE_OP type=kotlin.ULong origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.ULong
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:ULong modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.ULong>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:ULong modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.ULong>]
|
||||||
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CALL 'takeUBytes(vararg UByte): Unit' type=kotlin.Unit origin=null
|
CALL 'takeUBytes(vararg UByte): Unit' type=kotlin.Unit origin=null
|
||||||
u: VARARG type=kotlin.UByteArray varargElementType=kotlin.UByte
|
u: VARARG type=kotlin.UByteArray varargElementType=kotlin.UByte
|
||||||
TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UByte>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UByte>]
|
||||||
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-IMPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
TYPE_OP type=kotlin.UByte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.UByte
|
||||||
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags: superTypes:[kotlin.Comparable<kotlin.UByte>]
|
typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:UByte modality:FINAL visibility:public flags:inline superTypes:[kotlin.Comparable<kotlin.UByte>]
|
||||||
CALL '<get-EXPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
CALL '<get-EXPLICIT_INT>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
||||||
CONST Byte type=kotlin.UByte value=42
|
CONST Byte type=kotlin.UByte value=42
|
||||||
CALL 'takeLong(Long): Unit' type=kotlin.Unit origin=null
|
CALL 'takeLong(Long): Unit' type=kotlin.Unit origin=null
|
||||||
|
|||||||
@@ -131,6 +131,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
|
|||||||
runTest("compiler/testData/ir/irText/classes/initVar.kt");
|
runTest("compiler/testData/ir/irText/classes/initVar.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inlineClass.kt")
|
||||||
|
public void testInlineClass() throws Exception {
|
||||||
|
runTest("compiler/testData/ir/irText/classes/inlineClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("innerClass.kt")
|
@TestMetadata("innerClass.kt")
|
||||||
public void testInnerClass() throws Exception {
|
public void testInnerClass() throws Exception {
|
||||||
runTest("compiler/testData/ir/irText/classes/innerClass.kt");
|
runTest("compiler/testData/ir/irText/classes/innerClass.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user