JVM IR: Fix visibility for @InlineOnly functions

This commit is contained in:
Steven Schäfer
2019-09-02 16:40:40 +02:00
committed by Alexander Udalov
parent ee45933e33
commit e7410348a7
3 changed files with 5 additions and 6 deletions
@@ -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
@@ -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
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
class MyClass {
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@kotlin.internal.InlineOnly