JVM IR: generate ACC_SYNTHETIC for deprecated-hidden declarations correctly
Extract the logic that computes ACC_SYNTHETIC flag for deprecated declarations, and use `DeprecationResolver` as the old backend does in `DescriptorAsmUtil.getCommonCallableFlags`. Creating IR-based descriptors for each function to pass it there is a bit costly though, so as a small optimization, use `allOverridden` to check if anything in the method hierarchy is deprecated. Also optimize `allOverridden` for the case of linear inheritance which is far more common. #KT-43199 Fixed
This commit is contained in:
committed by
Alexander Udalov
parent
d9efc2d922
commit
0e91d3fcb0
@@ -0,0 +1,16 @@
|
||||
@Deprecated("")
|
||||
@Suppress("DEPRECATED_SINCE_KOTLIN_OUTSIDE_KOTLIN_SUBPACKAGE")
|
||||
@DeprecatedSinceKotlin(hiddenSince = "1.0")
|
||||
fun hidden() {}
|
||||
|
||||
open class Base {
|
||||
@Deprecated("", level = DeprecationLevel.HIDDEN)
|
||||
open fun f() {}
|
||||
}
|
||||
|
||||
class Derived : Base {
|
||||
@Deprecated("", level = DeprecationLevel.HIDDEN)
|
||||
constructor()
|
||||
|
||||
override fun f() {}
|
||||
}
|
||||
Reference in New Issue
Block a user