JVM_IR KT-37006: InlineOnly property accessors are private in bytecode
This commit is contained in:
+7
-2
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.load.java.JavaVisibilities
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver
|
||||
import org.jetbrains.kotlin.resolve.inline.*
|
||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmClassSignature
|
||||
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
||||
@@ -285,7 +284,7 @@ fun IrDeclarationWithVisibility.isInlineOnlyOrReifiable(): Boolean =
|
||||
this is IrFunction && (isReifiable() || isInlineOnly())
|
||||
|
||||
fun IrDeclarationWithVisibility.isEffectivelyInlineOnly(): Boolean =
|
||||
isInlineOnlyOrReifiable() || isInlineOnlyPrivateInBytecode()
|
||||
isInlineOnlyOrReifiable() || isInlineOnlyPrivateInBytecode() || isInlineOnlyPropertyAccessor()
|
||||
|
||||
fun IrDeclarationWithVisibility.isInlineOnlyPrivateInBytecode(): Boolean =
|
||||
(this is IrFunction && isInlineOnly()) || isPrivateInlineSuspend()
|
||||
@@ -293,6 +292,12 @@ fun IrDeclarationWithVisibility.isInlineOnlyPrivateInBytecode(): Boolean =
|
||||
private fun IrDeclarationWithVisibility.isPrivateInlineSuspend(): Boolean =
|
||||
this is IrFunction && isSuspend && isInline && visibility == Visibilities.PRIVATE
|
||||
|
||||
private fun IrDeclarationWithVisibility.isInlineOnlyPropertyAccessor(): Boolean {
|
||||
if (this !is IrSimpleFunction) return false
|
||||
val propertySymbol = correspondingPropertySymbol ?: return false
|
||||
return propertySymbol.owner.hasAnnotation(INLINE_ONLY_ANNOTATION_FQ_NAME)
|
||||
}
|
||||
|
||||
fun IrFunction.isInlineOnly() =
|
||||
isInline && hasAnnotation(INLINE_ONLY_ANNOTATION_FQ_NAME)
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// !LANGUAGE: +UseGetterNameForPropertyAnnotationsMethodOnJvm
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// WITH_RUNTIME
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
|
||||
Reference in New Issue
Block a user