Minor, extract isDeprecatedHidden for usage in codegen

Also remove a hundred year old TODO
This commit is contained in:
Alexander Udalov
2016-10-10 14:23:41 +03:00
parent 2e4592c6dc
commit 59b29cf00d
2 changed files with 7 additions and 4 deletions
@@ -231,15 +231,14 @@ public class AsmUtil {
int flags = getVisibilityAccessFlag(functionDescriptor);
flags |= getVarargsFlag(functionDescriptor);
flags |= getDeprecatedAccessFlag(functionDescriptor);
if (DeprecationUtilKt.isHiddenInResolution(functionDescriptor)
if (DeprecationUtilKt.isDeprecatedHidden(functionDescriptor)
|| functionDescriptor instanceof PropertyAccessorDescriptor
&& DeprecationUtilKt.isHiddenInResolution(((PropertyAccessorDescriptor) functionDescriptor).getCorrespondingProperty())) {
&& DeprecationUtilKt.isDeprecatedHidden(((PropertyAccessorDescriptor) functionDescriptor).getCorrespondingProperty())) {
flags |= ACC_SYNTHETIC;
}
return flags;
}
//TODO: move mapping logic to front-end java
public static int getVisibilityAccessFlag(@NotNull MemberDescriptor descriptor) {
Integer specialCase = specialCaseVisibility(descriptor);
if (specialCase != null) {
@@ -183,11 +183,15 @@ enum class DeprecationLevelValue {
WARNING, ERROR, HIDDEN
}
fun DeclarationDescriptor.isDeprecatedHidden(): Boolean {
return getDeprecation()?.deprecationLevel == DeprecationLevelValue.HIDDEN
}
@JvmOverloads
fun DeclarationDescriptor.isHiddenInResolution(isSuperCall: Boolean = false): Boolean {
if (this is FunctionDescriptor) {
if (isHiddenToOvercomeSignatureClash) return true
if (isHiddenForResolutionEverywhereBesideSupercalls && !isSuperCall) return true
}
return getDeprecation()?.deprecationLevel == DeprecationLevelValue.HIDDEN
return isDeprecatedHidden()
}