IR util: IrExpression.isSafeToUseWithoutCopying
This commit is contained in:
committed by
Mikhail Glukhikh
parent
7ef1c74bbf
commit
b57794d96e
-7
@@ -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(
|
private fun createAdapterFunction(
|
||||||
callableReferenceAccess: FirCallableReferenceAccess,
|
callableReferenceAccess: FirCallableReferenceAccess,
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
|
|||||||
+1
-10
@@ -33,10 +33,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.*
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.isImmutable
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
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.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
@@ -235,12 +232,6 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
|
|||||||
return irCall
|
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(
|
private fun putAdaptedValueArguments(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
|
|||||||
@@ -608,4 +608,10 @@ val IrDeclaration.isFileClass: Boolean
|
|||||||
get() = origin == IrDeclarationOrigin.FILE_CLASS || origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS
|
get() = origin == IrDeclarationOrigin.FILE_CLASS || origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS
|
||||||
|
|
||||||
val IrValueDeclaration.isImmutable: Boolean
|
val IrValueDeclaration.isImmutable: Boolean
|
||||||
get() = this is IrValueParameter || this is IrVariable && !isVar
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user