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(
|
||||
callableReferenceAccess: FirCallableReferenceAccess,
|
||||
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.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,
|
||||
|
||||
@@ -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
|
||||
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