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 staticFlag = if (isStatic) Opcodes.ACC_STATIC else 0
|
||||||
val varargFlag = if (irFunction.valueParameters.any { it.varargElementType != null }) Opcodes.ACC_VARARGS else 0
|
val varargFlag = if (irFunction.valueParameters.any { it.varargElementType != null }) Opcodes.ACC_VARARGS else 0
|
||||||
val deprecation = irFunction.deprecationFlags
|
val deprecation = irFunction.deprecationFlags
|
||||||
|
|||||||
+4
-4
@@ -167,7 +167,7 @@ private fun IrClass.innerAccessFlagsForModalityAndKind(): Int {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrDeclarationWithVisibility.getVisibilityAccessFlag(kind: OwnerKind? = null): Int =
|
fun IrDeclarationWithVisibility.getVisibilityAccessFlag(kind: OwnerKind? = null): Int =
|
||||||
specialCaseVisibility(kind)
|
specialCaseVisibility(kind)
|
||||||
?: visibilityToAccessFlag[visibility]
|
?: visibilityToAccessFlag[visibility]
|
||||||
?: throw IllegalStateException("$visibility is not a valid visibility in backend for ${ir2string(this)}")
|
?: 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)) {
|
// if (memberDescriptor is ConstructorDescriptor && isAnonymousObject(memberDescriptor.containingDeclaration)) {
|
||||||
// return getVisibilityAccessFlagForAnonymous(memberDescriptor.containingDeclaration as ClassDescriptor)
|
// return getVisibilityAccessFlagForAnonymous(memberDescriptor.containingDeclaration as ClassDescriptor)
|
||||||
// }
|
// }
|
||||||
if (this is IrConstructor && parentAsClass.isAnonymousObject) {
|
// if (this is IrConstructor && parentAsClass.isAnonymousObject) {
|
||||||
return parentAsClass.getVisibilityAccessFlagForAnonymous()
|
// return parentAsClass.getVisibilityAccessFlagForAnonymous()
|
||||||
}
|
// }
|
||||||
|
|
||||||
// TODO: when is this applicable?
|
// TODO: when is this applicable?
|
||||||
// if (memberDescriptor is SyntheticJavaPropertyDescriptor) {
|
// if (memberDescriptor is SyntheticJavaPropertyDescriptor) {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
class MyClass {
|
class MyClass {
|
||||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||||
@kotlin.internal.InlineOnly
|
@kotlin.internal.InlineOnly
|
||||||
|
|||||||
Reference in New Issue
Block a user