diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt index 97592f4ad68..467d758cfbd 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt @@ -192,13 +192,6 @@ class CallAndReferenceGenerator( } } - // TODO: refactor/reuse the same logic in ReflectionReferencesGenerator - private fun IrExpression.isSafeToUseWithoutCopying() = - this is IrGetObjectValue || - this is IrGetEnumValue || - this is IrConst<*> || - this is IrGetValue && symbol.isBound && symbol.owner.isImmutable - private fun createAdapterFunction( callableReferenceAccess: FirCallableReferenceAccess, startOffset: Int, diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index 9a39ce840bd..8fd850f9875 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -33,10 +33,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol -import org.jetbrains.kotlin.ir.util.isImmutable -import org.jetbrains.kotlin.ir.util.referenceClassifier -import org.jetbrains.kotlin.ir.util.referenceFunction -import org.jetbrains.kotlin.ir.util.withScope +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset @@ -235,12 +232,6 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St return irCall } - private fun IrExpression.isSafeToUseWithoutCopying() = - this is IrGetObjectValue || - this is IrGetEnumValue || - this is IrConst<*> || - this is IrGetValue && symbol.isBound && symbol.owner.isImmutable - private fun putAdaptedValueArguments( startOffset: Int, endOffset: Int, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 55e6ecef099..a25faf9fb8f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -608,4 +608,10 @@ val IrDeclaration.isFileClass: Boolean get() = origin == IrDeclarationOrigin.FILE_CLASS || origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS val IrValueDeclaration.isImmutable: Boolean - get() = this is IrValueParameter || this is IrVariable && !isVar \ No newline at end of file + get() = this is IrValueParameter || this is IrVariable && !isVar + +fun IrExpression.isSafeToUseWithoutCopying() = + this is IrGetObjectValue || + this is IrGetEnumValue || + this is IrConst<*> || + this is IrGetValue && symbol.isBound && symbol.owner.isImmutable