IR: add IrSimpleFunction.isInfix

This commit is contained in:
Georgy Bronnikov
2020-07-14 20:59:58 +03:00
parent 8e4bc06b3c
commit c901e82a55
28 changed files with 60 additions and 32 deletions
@@ -396,7 +396,8 @@ class Fir2IrDeclarationStorage(
isSuspend = isSuspend,
isExpect = simpleFunction?.isExpect == true,
isFakeOverride = updatedOrigin == IrDeclarationOrigin.FAKE_OVERRIDE,
isOperator = simpleFunction?.isOperator == true
isOperator = simpleFunction?.isOperator == true,
isInfix = simpleFunction?.isInfix == true
).apply {
metadata = FirMetadataSource.Function(function)
convertAnnotationsFromLibrary(function)
@@ -520,7 +521,7 @@ class Fir2IrDeclarationStorage(
isExternal = propertyAccessor?.isExternal == true,
isTailrec = false, isSuspend = false, isExpect = false,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
isOperator = false
isOperator = false, isInfix = false
).apply {
correspondingPropertySymbol = correspondingProperty.symbol
if (propertyAccessor != null) {
@@ -260,7 +260,8 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) {
isSuspend = false,
isExpect = false,
isFakeOverride = false,
isOperator = false
isOperator = false,
isInfix = false
).apply {
if (otherParameterNeeded) {
val irValueParameter = createSyntheticIrParameter(
@@ -129,6 +129,7 @@ internal class DelegatedMemberGenerator(
superFunction.isTailrec,
superFunction.isSuspend,
superFunction.isOperator,
superFunction.isInfix,
superFunction.isExpect
).apply {
descriptor.bind(this)
@@ -51,6 +51,9 @@ class Fir2IrLazySimpleFunction(
override val isOperator: Boolean
get() = fir.isOperator
override val isInfix: Boolean
get() = fir.isInfix
@ObsoleteDescriptorBasedAPI
override val descriptor: FunctionDescriptor
get() = super.descriptor as FunctionDescriptor
@@ -490,6 +490,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
isTailrec = irFunction.isTailrec
isSuspend = irFunction.isSuspend
isOperator = irFunction.isOperator
isInfix = irFunction.isInfix
isExpect = irFunction.isExpect
isFakeOverride = true
}.apply {
@@ -540,7 +541,8 @@ fun createStaticFunctionWithReceivers(
isSuspend = oldFunction.isSuspend,
isExpect = oldFunction.isExpect,
isFakeOverride = isFakeOverride,
isOperator = oldFunction is IrSimpleFunction && oldFunction.isOperator
isOperator = oldFunction is IrSimpleFunction && oldFunction.isOperator,
isInfix = oldFunction is IrSimpleFunction && oldFunction.isInfix
).apply {
descriptor.bind(this)
parent = irParent
@@ -136,7 +136,7 @@ internal fun IrFunctionBuilder.buildFunction(originalDescriptor: FunctionDescrip
startOffset, endOffset, origin,
IrSimpleFunctionSymbolImpl(wrappedDescriptor),
name, visibility, modality, returnType,
isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect, isFakeOverride
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect, isFakeOverride
).also {
wrappedDescriptor.bind(it)
}
@@ -99,6 +99,7 @@ object JsIrBuilder {
isSuspend: Boolean = false,
isExpect: Boolean = false,
isOperator: Boolean = false,
isInfix: Boolean = false,
isFakeOverride: Boolean = false,
origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION
): IrSimpleFunction = buildFun {
@@ -112,6 +113,7 @@ object JsIrBuilder {
this.isTailrec = isTailrec
this.isSuspend = isSuspend
this.isOperator = isOperator
this.isInfix = isInfix
this.isExpect = isExpect
this.isFakeOverride = isFakeOverride
}.also {
@@ -264,6 +264,7 @@ class JvmDeclarationFactory(
isTailrec = false
isSuspend = fakeOverride.isSuspend
isOperator = fakeOverride.isOperator
isInfix = fakeOverride.isInfix
isExpect = false
isFakeOverride = false
}.apply {
@@ -401,7 +401,7 @@ private fun StatementGenerator.createFunctionForSuspendConversion(
irSuspendFunReturnType,
isInline = false, isExternal = false, isTailrec = false,
isSuspend = true,
isOperator = false, isExpect = false, isFakeOverride = false
isOperator = false, isInfix = false, isExpect = false, isFakeOverride = false
)
}
adapterFunctionDescriptor.bind(irAdapterFun)
@@ -358,6 +358,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
isTailrec = false,
isSuspend = adapteeDescriptor.isSuspend || hasSuspendConversion,
isOperator = adapteeDescriptor.isOperator, // TODO ?
isInfix = adapteeDescriptor.isInfix,
isExpect = false,
isFakeOverride = false
).also { irAdapterFun ->
@@ -184,7 +184,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
val irFunction = with(descriptor) {
IrFunctionImpl(
startOffset, endOffset, origin, symbol, name, visibility, modality, IrUninitializedType,
isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect
)
}
irFunction.metadata = MetadataSource.Function(descriptor)
@@ -24,6 +24,7 @@ class IrFunctionBuilder : IrDeclarationBuilder() {
var isSuspend: Boolean = false
var isExpect: Boolean = false
var isOperator: Boolean = false
var isInfix: Boolean = false
var isPrimary: Boolean = false
@@ -41,12 +42,14 @@ class IrFunctionBuilder : IrDeclarationBuilder() {
isTailrec = from.isTailrec
isSuspend = from.isSuspend
isOperator = from.isOperator
isInfix = from.isInfix
isFakeOverride = from.isFakeOverride
} else {
modality = Modality.FINAL
isTailrec = false
isSuspend = false
isOperator = false
isInfix = false
}
if (from is IrConstructor) {
@@ -19,6 +19,7 @@ interface IrSimpleFunction :
val isSuspend: Boolean
val isFakeOverride: Boolean
val isOperator: Boolean
val isInfix: Boolean
var correspondingPropertySymbol: IrPropertySymbol?
}
@@ -33,6 +33,7 @@ abstract class IrFunctionCommonImpl(
override val isTailrec: Boolean,
override val isSuspend: Boolean,
override val isOperator: Boolean,
override val isInfix: Boolean,
isExpect: Boolean,
override val isFakeOverride: Boolean
) :
@@ -91,10 +92,11 @@ class IrFunctionImpl(
override val isTailrec: Boolean,
override val isSuspend: Boolean,
override val isOperator: Boolean,
isInfix: Boolean,
isExpect: Boolean,
override val isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE
) : IrFunctionCommonImpl(startOffset, endOffset, origin, name, visibility, modality, returnType, isInline,
isExternal, isTailrec, isSuspend, isOperator, isExpect, isFakeOverride) {
isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect, isFakeOverride) {
@ObsoleteDescriptorBasedAPI
override val descriptor: FunctionDescriptor get() = symbol.descriptor
@@ -120,9 +122,10 @@ class IrFakeOverrideFunctionImpl(
isTailrec: Boolean,
isSuspend: Boolean,
isOperator: Boolean,
isInfix: Boolean,
isExpect: Boolean
) : IrFunctionCommonImpl(startOffset, endOffset, origin, name, visibility, modality, returnType, isInline,
isExternal, isTailrec, isSuspend, isOperator, isExpect,
isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect,
isFakeOverride = true)
{
private var _symbol: IrSimpleFunctionSymbol? = null
@@ -36,6 +36,7 @@ class IrLazyFunction(
isExpect: Boolean,
override val isFakeOverride: Boolean,
override val isOperator: Boolean,
override val isInfix: Boolean,
stubGenerator: DeclarationStubGenerator,
typeTranslator: TypeTranslator
) :
@@ -70,8 +70,8 @@ class IrBuiltIns(
val symbol = symbolTable.declareSimpleFunctionIfNotExists(operatorDescriptor) {
val operator = IrFunctionImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, it, Name.identifier(name), Visibilities.PUBLIC, Modality.FINAL,
returnType, isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isOperator = false,
isExpect = false, isFakeOverride = false
returnType, isInline = false, isExternal = false, isTailrec = false, isSuspend = false,
isOperator = false, isInfix = false, isExpect = false, isFakeOverride = false
)
operator.parent = packageFragment
packageFragment.declarations += operator
@@ -156,8 +156,8 @@ class IrBuiltIns(
return symbolTable.declareSimpleFunctionIfNotExists(operatorDescriptor) {
val operator = IrFunctionImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, it, name, Visibilities.PUBLIC, Modality.FINAL, returnIrType,
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isOperator = false, isExpect = false,
isFakeOverride = false
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isOperator = false, isInfix = false,
isExpect = false, isFakeOverride = false
)
operator.parent = packageFragment
packageFragment.declarations += operator
@@ -304,6 +304,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
isTailrec = false,
isSuspend = isSuspend,
isOperator = true,
isInfix = false,
isExpect = false,
isFakeOverride = false
)
@@ -374,7 +375,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
descriptor.run {
IrFunctionImpl(
offset, offset, memberOrigin, it, name, visibility, modality, returnType,
isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect, true
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect, true
)
}
}
@@ -220,7 +220,8 @@ class DeclarationStubGenerator(
it, descriptor,
descriptor.name, descriptor.visibility, descriptor.modality,
descriptor.isInline, descriptor.isExternal, descriptor.isTailrec, descriptor.isSuspend, descriptor.isExpect,
isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE), isOperator = descriptor.isOperator,
isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE),
isOperator = descriptor.isOperator, isInfix = descriptor.isInfix,
stubGenerator = this, typeTranslator = typeTranslator
)
}
@@ -165,7 +165,8 @@ open class DeepCopyIrTreeWithSymbols(
isSuspend = declaration.isSuspend,
isExpect = declaration.isExpect,
isFakeOverride = declaration.isFakeOverride,
isOperator = declaration.isOperator
isOperator = declaration.isOperator,
isInfix = declaration.isInfix
).apply {
overriddenSymbols = declaration.overriddenSymbols.map {
symbolRemapper.getReferencedFunction(it) as IrSimpleFunctionSymbol
@@ -385,7 +385,8 @@ class RenderIrElementVisitor(private val normalizeNames: Boolean = false) : IrEl
"suspend".takeIf { isSuspend },
"expect".takeIf { isExpect },
"fake_override".takeIf { isFakeOverride },
"operator".takeIf { isOperator }
"operator".takeIf { isOperator },
"infix".takeIf { isInfix }
)
private fun IrFunction.renderTypeParameters(): String =
@@ -24,7 +24,7 @@ fun SymbolTable.declareSimpleFunctionWithOverrides(
with(descriptor) {
IrFunctionImpl(
startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(this),
visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect
visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect
).also { declaration ->
declaration.metadata = MetadataSource.Function(this)
}
@@ -59,7 +59,8 @@ class FakeOverrideCopier(
isTailrec = declaration.isTailrec,
isSuspend = declaration.isSuspend,
isExpect = declaration.isExpect,
isOperator = declaration.isOperator
isOperator = declaration.isOperator,
isInfix = declaration.isInfix
).apply {
transformFunctionChildren(declaration)
}
@@ -1191,6 +1191,7 @@ abstract class IrFileDeserializer(
flags.isTailrec,
flags.isSuspend,
flags.isOperator,
flags.isInfix,
flags.isExpect,
flags.isFakeOverride
)
@@ -54,6 +54,7 @@ inline class FunctionFlags(val flags: Long) {
val visibility: Visibility get() = ProtoEnumFlags.visibility(IrFlags.VISIBILITY.get(flags.toInt()))
val isOperator: Boolean get() = IrFlags.IS_OPERATOR.get(flags.toInt())
val isInfix: Boolean get() = IrFlags.IS_INFIX.get(flags.toInt())
val isInline: Boolean get() = IrFlags.IS_INLINE.get(flags.toInt())
val isTailrec: Boolean get() = IrFlags.IS_TAILREC.get(flags.toInt())
val isExternal: Boolean get() = IrFlags.IS_EXTERNAL_FUNCTION.get(flags.toInt())
@@ -76,7 +77,7 @@ inline class FunctionFlags(val flags: Long) {
val flags = IrFlags.getFunctionFlags(
hasAnnotation, visibility, modality, kind,
isOperator, false, isInline, isTailrec, isExternal, isSuspend, isExpect
isOperator, isInfix, isInline, isTailrec, isExternal, isSuspend, isExpect
)
return flags.toLong()
@@ -28,7 +28,7 @@ FILE fqName:<root> fileName:/booleanOperators.kt
VALUE_PARAMETER name:b index:1 type:kotlin.Boolean
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test1x (a: kotlin.Boolean, b: kotlin.Boolean): kotlin.Boolean declared in <root>'
CALL 'public final fun and (other: kotlin.Boolean): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
CALL 'public final fun and (other: kotlin.Boolean): kotlin.Boolean [infix] declared in kotlin.Boolean' type=kotlin.Boolean origin=null
$this: GET_VAR 'a: kotlin.Boolean declared in <root>.test1x' type=kotlin.Boolean origin=null
other: GET_VAR 'b: kotlin.Boolean declared in <root>.test1x' type=kotlin.Boolean origin=null
FUN name:test2x visibility:public modality:FINAL <> (a:kotlin.Boolean, b:kotlin.Boolean) returnType:kotlin.Boolean
@@ -36,6 +36,6 @@ FILE fqName:<root> fileName:/booleanOperators.kt
VALUE_PARAMETER name:b index:1 type:kotlin.Boolean
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test2x (a: kotlin.Boolean, b: kotlin.Boolean): kotlin.Boolean declared in <root>'
CALL 'public final fun or (other: kotlin.Boolean): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
CALL 'public final fun or (other: kotlin.Boolean): kotlin.Boolean [infix] declared in kotlin.Boolean' type=kotlin.Boolean origin=null
$this: GET_VAR 'a: kotlin.Boolean declared in <root>.test2x' type=kotlin.Boolean origin=null
other: GET_VAR 'b: kotlin.Boolean declared in <root>.test2x' type=kotlin.Boolean origin=null
@@ -1,6 +1,6 @@
CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:public superTypes:[<unbound IrClassPublicSymbolImpl>; <unbound IrClassPublicSymbolImpl><kotlin.Int>; <unbound IrClassPublicSymbolImpl>]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:and visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:and visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Int, other:<unbound IrClassPublicSymbolImpl>) returnType:kotlin.Int [operator]
@@ -76,7 +76,7 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:publ
FUN IR_EXTERNAL_DECLARATION_STUB name:minus visibility:public modality:FINAL <> ($this:kotlin.Int, other:<unbound IrClassPublicSymbolImpl>) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:<unbound IrClassPublicSymbolImpl>
FUN IR_EXTERNAL_DECLARATION_STUB name:or visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:or visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:plus visibility:public modality:FINAL <> ($this:kotlin.Int, other:<unbound IrClassPublicSymbolImpl>) returnType:kotlin.Int [operator]
@@ -139,10 +139,10 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:publ
<unbound>(1 = '1.1')
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:<unbound IrClassPublicSymbolImpl>
FUN IR_EXTERNAL_DECLARATION_STUB name:shl visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:shl visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:bitCount index:0 type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:shr visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:shr visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:bitCount index:0 type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:times visibility:public modality:FINAL <> ($this:kotlin.Int, other:<unbound IrClassPublicSymbolImpl>) returnType:kotlin.Int [operator]
@@ -200,10 +200,10 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:publ
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:unaryPlus visibility:public modality:FINAL <> ($this:kotlin.Int) returnType:kotlin.Int [operator]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:ushr visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:ushr visibility:public modality:FINAL <> ($this:kotlin.Int, bitCount:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:bitCount index:0 type:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:xor visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int
FUN IR_EXTERNAL_DECLARATION_STUB name:xor visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int [infix]
$this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:<this> type:kotlin.Int
VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:kotlin.Int
CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[<unbound IrClassPublicSymbolImpl>]
+3 -3
View File
@@ -3,13 +3,13 @@
@4:0..26:1 VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Boolean
@8:20..38 FUN name:not visibility:public modality:ABSTRACT <> ($this:<root>.Boolean) returnType:<root>.Boolean [operator]
@8:4..38 VALUE_PARAMETER name:<this> type:<root>.Boolean
@13:10..42 FUN name:and visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean
@13:10..42 FUN name:and visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean [infix]
@13:4..42 VALUE_PARAMETER name:<this> type:<root>.Boolean
@13:18..32 VALUE_PARAMETER name:other index:0 type:<root>.Boolean
@18:10..41 FUN name:or visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean
@18:10..41 FUN name:or visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean [infix]
@18:4..41 VALUE_PARAMETER name:<this> type:<root>.Boolean
@18:17..31 VALUE_PARAMETER name:other index:0 type:<root>.Boolean
@23:10..42 FUN name:xor visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean
@23:10..42 FUN name:xor visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:<root>.Boolean [infix]
@23:4..42 VALUE_PARAMETER name:<this> type:<root>.Boolean
@23:18..32 VALUE_PARAMETER name:other index:0 type:<root>.Boolean
@25:4..38 FUN name:compareTo visibility:public modality:ABSTRACT <> ($this:<root>.Boolean, other:<root>.Boolean) returnType:kotlin.Int
@@ -287,7 +287,8 @@ interface IrBuilderExtension {
with(descriptor) {
IrFunctionImpl(
fieldSymbol.owner.startOffset, fieldSymbol.owner.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, symbol,
name, visibility, modality, returnType!!.toIrType(), isInline, isExternal, isTailrec, isSuspend, isOperator, isExpect
name, visibility, modality, returnType!!.toIrType(),
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect
)
}.also { f ->
generateOverriddenFunctionSymbols(f, compilerContext.symbolTable)