JVM IR: Fix visibility for @InlineOnly functions
This commit is contained in:
committed by
Alexander Udalov
parent
ee45933e33
commit
e7410348a7
+1
-1
@@ -106,7 +106,7 @@ open class FunctionCodegen(
|
||||
}
|
||||
}
|
||||
|
||||
val visibility = AsmUtil.getVisibilityAccessFlag(irFunction.visibility) ?: error("Unmapped visibility ${irFunction.visibility}")
|
||||
val visibility = irFunction.getVisibilityAccessFlag()
|
||||
val staticFlag = if (isStatic) Opcodes.ACC_STATIC else 0
|
||||
val varargFlag = if (irFunction.valueParameters.any { it.varargElementType != null }) Opcodes.ACC_VARARGS else 0
|
||||
val deprecation = irFunction.deprecationFlags
|
||||
|
||||
+4
-4
@@ -167,7 +167,7 @@ private fun IrClass.innerAccessFlagsForModalityAndKind(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
private fun IrDeclarationWithVisibility.getVisibilityAccessFlag(kind: OwnerKind? = null): Int =
|
||||
fun IrDeclarationWithVisibility.getVisibilityAccessFlag(kind: OwnerKind? = null): Int =
|
||||
specialCaseVisibility(kind)
|
||||
?: visibilityToAccessFlag[visibility]
|
||||
?: throw IllegalStateException("$visibility is not a valid visibility in backend for ${ir2string(this)}")
|
||||
@@ -223,9 +223,9 @@ private fun IrDeclarationWithVisibility.specialCaseVisibility(kind: OwnerKind?):
|
||||
// if (memberDescriptor is ConstructorDescriptor && isAnonymousObject(memberDescriptor.containingDeclaration)) {
|
||||
// return getVisibilityAccessFlagForAnonymous(memberDescriptor.containingDeclaration as ClassDescriptor)
|
||||
// }
|
||||
if (this is IrConstructor && parentAsClass.isAnonymousObject) {
|
||||
return parentAsClass.getVisibilityAccessFlagForAnonymous()
|
||||
}
|
||||
// if (this is IrConstructor && parentAsClass.isAnonymousObject) {
|
||||
// return parentAsClass.getVisibilityAccessFlagForAnonymous()
|
||||
// }
|
||||
|
||||
// TODO: when is this applicable?
|
||||
// if (memberDescriptor is SyntheticJavaPropertyDescriptor) {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
class MyClass {
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
|
||||
Reference in New Issue
Block a user