[KLIB] Support isHidden in proto flags

This commit is contained in:
Roman Artemev
2020-09-09 16:17:42 +03:00
parent f01941d1dd
commit 83d6255294
2 changed files with 21 additions and 1 deletions
@@ -27,6 +27,10 @@ public class IrFlags extends Flags {
public static final BooleanFlagField IS_STATIC = FlagField.booleanAfter(IS_EXTERNAL_FIELD);
public static final BooleanFlagField IS_FAKE_OVERRIDE = FlagField.booleanAfter(IS_STATIC);
// Parameters
public static final BooleanFlagField IS_HIDDEN = FlagField.booleanAfter(IS_NOINLINE);
// Local variables
public static final BooleanFlagField IS_LOCAL_VAR = FlagField.booleanAfter(HAS_ANNOTATIONS);
public static final BooleanFlagField IS_LOCAL_CONST = FlagField.booleanAfter(IS_LOCAL_VAR);
@@ -79,6 +83,21 @@ public class IrFlags extends Flags {
;
}
public static int getValueParameterFlags(
boolean hasAnnotations,
boolean declaresDefaultValue,
boolean isCrossinline,
boolean isNoinline,
boolean isHidden
) {
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
| DECLARES_DEFAULT_VALUE.toFlags(declaresDefaultValue)
| IS_CROSSINLINE.toFlags(isCrossinline)
| IS_NOINLINE.toFlags(isNoinline)
| IS_HIDDEN.toFlags(isHidden)
;
}
public static int getLocalFlags(boolean hasAnnotations, boolean isVar, boolean isConst, boolean isLateinit) {
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
| IS_LOCAL_VAR.toFlags(isVar)
@@ -142,11 +142,12 @@ inline class ValueParameterFlags(val flags: Long) {
val isCrossInline: Boolean get() = IrFlags.IS_CROSSINLINE.get(flags.toInt())
val isNoInline: Boolean get() = IrFlags.IS_NOINLINE.get(flags.toInt())
val isHidden: Boolean get() = IrFlags.IS_HIDDEN.get(flags.toInt())
companion object {
fun encode(param: IrValueParameter): Long {
return param.run {
IrFlags.getValueParameterFlags(annotations.isNotEmpty(), defaultValue != null, isCrossinline, isNoinline).toLong()
IrFlags.getValueParameterFlags(annotations.isNotEmpty(), defaultValue != null, isCrossinline, isNoinline, isHidden).toLong()
}
}