[IR] Extract IrDeclaration(Access).psiElement extension

This commit is contained in:
Mikhail Glukhikh
2020-05-19 18:40:36 +03:00
parent 6b3c390fa7
commit 8a15edf5e6
4 changed files with 11 additions and 4 deletions
@@ -83,7 +83,7 @@ abstract class ClassCodegen protected constructor(
throw IllegalStateException("Generating class with invalid name '${type.className}': ${irClass.dump()}")
}
defineClass(
irClass.descriptor.psiElement,
irClass.psiElement,
state.classFileVersion,
irClass.flags,
signature.name,
@@ -44,9 +44,9 @@ internal fun MethodNode.acceptWithStateMachine(
val languageVersionSettings = state.languageVersionSettings
assert(languageVersionSettings.isReleaseCoroutines()) { "Experimental coroutines are unsupported in JVM_IR backend" }
val element = if (irFunction.isSuspend)
irFunction.symbol.descriptor.psiElement ?: classCodegen.irClass.descriptor.psiElement
irFunction.psiElement ?: classCodegen.irClass.psiElement
else
classCodegen.context.suspendLambdaToOriginalFunctionMap[classCodegen.irClass.attributeOwnerId]!!.symbol.descriptor.psiElement
classCodegen.context.suspendLambdaToOriginalFunctionMap[classCodegen.irClass.attributeOwnerId]!!.psiElement
val visitor = CoroutineTransformerMethodVisitor(
methodVisitor, access, name, desc, signature, exceptions.toTypedArray(),
obtainClassBuilderForCoroutineState = obtainContinuationClassBuilder,
@@ -142,5 +142,5 @@ class IrSourceCompilerForInline(
.report(SUSPENSION_POINT_INSIDE_MONITOR, stackTraceElement)
}
private fun findElement() = (callElement.symbol.descriptor.original as? DeclarationDescriptorWithSource)?.source?.getPsi() as? KtElement
private fun findElement() = callElement.psiElement as? KtElement
}
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.IrSimpleType
@@ -425,3 +426,9 @@ val IrFunction.deprecationFlags: Int
val propertyFlags = (this as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.deprecationFlags ?: 0
return originFlags or propertyFlags or (this as IrAnnotationContainer).deprecationFlags
}
val IrDeclaration.psiElement: PsiElement?
get() = (descriptor as? DeclarationDescriptorWithSource)?.psiElement
val IrMemberAccessExpression.psiElement: PsiElement?
get() = (symbol.descriptor.original as? DeclarationDescriptorWithSource)?.psiElement