diff --git a/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOriginKind.kt b/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOriginKind.kt index bc0c91bc8f6..d327534708c 100644 --- a/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOriginKind.kt +++ b/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOriginKind.kt @@ -19,7 +19,6 @@ enum class JvmDeclarationOriginKind { SYNTHETIC, // this means that there's no proper descriptor for this jvm declaration, COLLECTION_STUB, AUGMENTED_BUILTIN_API, - ERASED_INLINE_CLASS, UNBOX_METHOD_OF_INLINE_CLASS, JVM_OVERLOADS, INLINE_VERSION_OF_SUSPEND_FUN, diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt index 80963ed883e..d92d5020b09 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt @@ -3,6 +3,8 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("FunctionName") + package org.jetbrains.kotlin.resolve.jvm.diagnostics import com.intellij.psi.PsiElement @@ -17,7 +19,7 @@ enum class MemberKind { FIELD, METHOD } data class RawSignature(val name: String, val desc: String, val kind: MemberKind) -class JvmDeclarationOrigin( +open class JvmDeclarationOrigin( val originKind: JvmDeclarationOriginKind, val element: PsiElement?, val descriptor: DeclarationDescriptor?, @@ -80,8 +82,5 @@ val CollectionStub = JvmDeclarationOrigin(COLLECTION_STUB, null, null) fun AugmentedBuiltInApi(descriptor: CallableDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(AUGMENTED_BUILTIN_API, null, descriptor) -fun ErasedInlineClassOrigin(element: PsiElement?, descriptor: ClassDescriptor): JvmDeclarationOrigin = - JvmDeclarationOrigin(ERASED_INLINE_CLASS, element, descriptor) - fun UnboxMethodOfInlineClass(descriptor: FunctionDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(UNBOX_METHOD_OF_INLINE_CLASS, null, descriptor) diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index dbc0fdb1846..f49cd88febd 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.MultifileFacadeFileEntry +import org.jetbrains.kotlin.backend.jvm.extensions.JvmIrDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.ir.* import org.jetbrains.kotlin.backend.jvm.mapping.IrTypeMapper import org.jetbrains.kotlin.backend.jvm.mapping.MethodSignatureMapper @@ -33,7 +34,6 @@ import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.builders.declarations.addFunction import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrConst import org.jetbrains.kotlin.ir.expressions.IrExpression @@ -59,7 +59,9 @@ import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtPropertyDelegate import org.jetbrains.kotlin.resolve.jvm.checkers.JvmSimpleNameBacktickChecker -import org.jetbrains.kotlin.resolve.jvm.diagnostics.* +import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind +import org.jetbrains.kotlin.resolve.jvm.diagnostics.MemberKind +import org.jetbrains.kotlin.resolve.jvm.diagnostics.RawSignature import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmClassSignature import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import org.jetbrains.org.objectweb.asm.* @@ -525,17 +527,17 @@ class ClassCodegen private constructor( } } - private val IrDeclaration.descriptorOrigin: JvmDeclarationOrigin + private val IrDeclaration.descriptorOrigin: JvmIrDeclarationOrigin get() { val psiElement = findPsiElementForDeclarationOrigin() return when { origin == IrDeclarationOrigin.FILE_CLASS -> - JvmDeclarationOrigin(JvmDeclarationOriginKind.PACKAGE_PART, psiElement, toIrBasedDescriptor()) + JvmIrDeclarationOrigin(JvmDeclarationOriginKind.PACKAGE_PART, psiElement, this) (this is IrSimpleFunction && isSuspend && isEffectivelyInlineOnly()) || origin == JvmLoweredDeclarationOrigin.FOR_INLINE_STATE_MACHINE_TEMPLATE || origin == JvmLoweredDeclarationOrigin.FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE -> - JvmDeclarationOrigin(JvmDeclarationOriginKind.INLINE_VERSION_OF_SUSPEND_FUN, psiElement, toIrBasedDescriptor()) - else -> OtherOrigin(psiElement, toIrBasedDescriptor()) + JvmIrDeclarationOrigin(JvmDeclarationOriginKind.INLINE_VERSION_OF_SUSPEND_FUN, psiElement, this) + else -> JvmIrDeclarationOrigin(JvmDeclarationOriginKind.OTHER, psiElement, this) } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/extensions/JvmIrDeclarationOrigin.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/extensions/JvmIrDeclarationOrigin.kt new file mode 100644 index 00000000000..8cf093041e0 --- /dev/null +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/extensions/JvmIrDeclarationOrigin.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.jvm.extensions + +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor +import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin +import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind + +class JvmIrDeclarationOrigin( + originKind: JvmDeclarationOriginKind, + element: PsiElement?, + val declaration: IrDeclaration?, +) : JvmDeclarationOrigin(originKind, element, declaration?.toIrBasedDescriptor(), null)