From c901e82a55844c859498e15ff4aaac4798663adb Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 14 Jul 2020 20:59:58 +0300 Subject: [PATCH] IR: add IrSimpleFunction.isInfix --- .../kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 5 +++-- .../backend/generators/DataClassMembersGenerator.kt | 3 ++- .../backend/generators/DelegatedMemberGenerator.kt | 1 + .../kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt | 3 +++ .../jetbrains/kotlin/backend/common/ir/IrUtils.kt | 4 +++- .../ir/builders/declarations/declarationBuilders.kt | 2 +- .../jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt | 2 ++ .../backend/jvm/descriptors/JvmDeclarationFactory.kt | 1 + .../psi2ir/generators/ArgumentsGenerationUtils.kt | 2 +- .../generators/ReflectionReferencesGenerator.kt | 1 + .../generators/StandaloneDeclarationGenerator.kt | 2 +- .../ir/builders/declarations/IrFunctionBuilder.kt | 3 +++ .../kotlin/ir/declarations/IrSimpleFunction.kt | 1 + .../kotlin/ir/declarations/impl/IrFunctionImpl.kt | 7 +++++-- .../kotlin/ir/declarations/lazy/IrLazyFunction.kt | 1 + .../jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt | 8 ++++---- .../kotlin/ir/descriptors/IrFunctionFactory.kt | 3 ++- .../kotlin/ir/util/DeclarationStubGenerator.kt | 3 ++- .../kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt | 3 ++- .../org/jetbrains/kotlin/ir/util/RenderIrElement.kt | 3 ++- .../src/org/jetbrains/kotlin/ir/util/overrides.kt | 2 +- .../backend/common/overrides/FakeOverrideCopier.kt | 3 ++- .../common/serialization/IrFileDeserializer.kt | 1 + .../common/serialization/encodings/BinaryFlags.kt | 3 ++- .../ir/irText/expressions/booleanOperators.txt | 4 ++-- .../irText/stubs/constFromBuiltins__kotlin.Int.txt | 12 ++++++------ compiler/testData/ir/sourceRanges/kt17108.txt | 6 +++--- .../compiler/backend/ir/GeneratorHelpers.kt | 3 ++- 28 files changed, 60 insertions(+), 32 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 82451ce0a3e..03f6ce10785 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -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) { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt index b56669eb786..53f7a84503f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt @@ -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( diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt index 16e65d121e8..e666b1f1837 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt @@ -129,6 +129,7 @@ internal class DelegatedMemberGenerator( superFunction.isTailrec, superFunction.isSuspend, superFunction.isOperator, + superFunction.isInfix, superFunction.isExpect ).apply { descriptor.bind(this) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt index 6bfdd4fc1e2..e4aefef8016 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt @@ -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 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 c0ca53af039..6d432f386d9 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 @@ -490,6 +490,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt index a84c9a0afbc..59db16ac232 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt @@ -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) 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 aa561a5377d..fd4557f7eac 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 @@ -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) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt index 8a1159d3b21..c6327c11dec 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt @@ -19,6 +19,7 @@ interface IrSimpleFunction : val isSuspend: Boolean val isFakeOverride: Boolean val isOperator: Boolean + val isInfix: Boolean var correspondingPropertySymbol: IrPropertySymbol? } 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 8dbd5e991d3..bcbfd38bad1 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 @@ -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 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 158d319cb42..395e2f89292 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 @@ -36,6 +36,7 @@ class IrLazyFunction( isExpect: Boolean, override val isFakeOverride: Boolean, override val isOperator: Boolean, + override val isInfix: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt index 3802c7b50b8..23e717e4093 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt @@ -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 diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt index 2eea7075de4..139de3e09fe 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt @@ -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 ) } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt index b806538305e..c022b9be2b8 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt @@ -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 ) } 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 8a884274d8f..2ef676abc53 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 @@ -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 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 d39fb724952..d6c35894f02 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 @@ -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 = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt index b20e99da1ca..c07aabfd71b 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt @@ -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) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrideCopier.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrideCopier.kt index 6394766eef5..cf8936cf321 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrideCopier.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrideCopier.kt @@ -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) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index 082fedb0f02..ef543b9b37a 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -1191,6 +1191,7 @@ abstract class IrFileDeserializer( flags.isTailrec, flags.isSuspend, flags.isOperator, + flags.isInfix, flags.isExpect, flags.isFakeOverride ) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt index 03d7709a16f..00fba881c20 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt @@ -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() diff --git a/compiler/testData/ir/irText/expressions/booleanOperators.txt b/compiler/testData/ir/irText/expressions/booleanOperators.txt index 55a2108c32c..f92c381af60 100644 --- a/compiler/testData/ir/irText/expressions/booleanOperators.txt +++ b/compiler/testData/ir/irText/expressions/booleanOperators.txt @@ -28,7 +28,7 @@ FILE fqName: 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 ' - 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 .test1x' type=kotlin.Boolean origin=null other: GET_VAR 'b: kotlin.Boolean declared in .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: 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 ' - 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 .test2x' type=kotlin.Boolean origin=null other: GET_VAR 'b: kotlin.Boolean declared in .test2x' type=kotlin.Boolean origin=null diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt index d36aa3818c2..5e483eb0602 100644 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt +++ b/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt @@ -1,6 +1,6 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:public superTypes:[; ; ] $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: 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: 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:) 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:) returnType:kotlin.Int [operator] $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: type:kotlin.Int VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type: - 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: 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:) returnType:kotlin.Int [operator] @@ -139,10 +139,10 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:publ (1 = '1.1') $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: type:kotlin.Int VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type: - 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: 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: 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:) 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: 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: 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: 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: 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:[] diff --git a/compiler/testData/ir/sourceRanges/kt17108.txt b/compiler/testData/ir/sourceRanges/kt17108.txt index 0405cd226dd..13bf7e8f347 100644 --- a/compiler/testData/ir/sourceRanges/kt17108.txt +++ b/compiler/testData/ir/sourceRanges/kt17108.txt @@ -3,13 +3,13 @@ @4:0..26:1 VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Boolean @8:20..38 FUN name:not visibility:public modality:ABSTRACT <> ($this:.Boolean) returnType:.Boolean [operator] @8:4..38 VALUE_PARAMETER name: type:.Boolean - @13:10..42 FUN name:and visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean + @13:10..42 FUN name:and visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean [infix] @13:4..42 VALUE_PARAMETER name: type:.Boolean @13:18..32 VALUE_PARAMETER name:other index:0 type:.Boolean - @18:10..41 FUN name:or visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean + @18:10..41 FUN name:or visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean [infix] @18:4..41 VALUE_PARAMETER name: type:.Boolean @18:17..31 VALUE_PARAMETER name:other index:0 type:.Boolean - @23:10..42 FUN name:xor visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean + @23:10..42 FUN name:xor visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:.Boolean [infix] @23:4..42 VALUE_PARAMETER name: type:.Boolean @23:18..32 VALUE_PARAMETER name:other index:0 type:.Boolean @25:4..38 FUN name:compareTo visibility:public modality:ABSTRACT <> ($this:.Boolean, other:.Boolean) returnType:kotlin.Int diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index e1063d819d1..ab2f85c0a9c 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -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)