[IR] Support isAssignable in builders and serialization.
This commit is contained in:
committed by
Alexander Udalov
parent
37145fb055
commit
af0999ec6f
+1
-1
@@ -1010,7 +1010,7 @@ abstract class IrFileDeserializer(
|
||||
flags.isCrossInline,
|
||||
flags.isNoInline,
|
||||
flags.isHidden,
|
||||
false
|
||||
flags.isAssignable
|
||||
).apply {
|
||||
if (proto.hasDefaultValue())
|
||||
defaultValue = irFactory.createExpressionBody(deserializeExpressionBody(proto.defaultValue))
|
||||
|
||||
+4
-1
@@ -30,6 +30,7 @@ public class IrFlags extends Flags {
|
||||
// Parameters
|
||||
|
||||
public static final BooleanFlagField IS_HIDDEN = FlagField.booleanAfter(IS_NOINLINE);
|
||||
public static final BooleanFlagField IS_ASSIGNABLE = FlagField.booleanAfter(IS_HIDDEN);
|
||||
|
||||
// Local variables
|
||||
public static final BooleanFlagField IS_LOCAL_VAR = FlagField.booleanAfter(HAS_ANNOTATIONS);
|
||||
@@ -88,13 +89,15 @@ public class IrFlags extends Flags {
|
||||
boolean declaresDefaultValue,
|
||||
boolean isCrossinline,
|
||||
boolean isNoinline,
|
||||
boolean isHidden
|
||||
boolean isHidden,
|
||||
boolean isAssignable
|
||||
) {
|
||||
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
|
||||
| DECLARES_DEFAULT_VALUE.toFlags(declaresDefaultValue)
|
||||
| IS_CROSSINLINE.toFlags(isCrossinline)
|
||||
| IS_NOINLINE.toFlags(isNoinline)
|
||||
| IS_HIDDEN.toFlags(isHidden)
|
||||
| IS_ASSIGNABLE.toFlags(isAssignable)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -143,11 +143,19 @@ 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())
|
||||
val isAssignable: Boolean get() = IrFlags.IS_ASSIGNABLE.get(flags.toInt())
|
||||
|
||||
companion object {
|
||||
fun encode(param: IrValueParameter): Long {
|
||||
return param.run {
|
||||
IrFlags.getValueParameterFlags(annotations.isNotEmpty(), defaultValue != null, isCrossinline, isNoinline, isHidden).toLong()
|
||||
IrFlags.getValueParameterFlags(
|
||||
annotations.isNotEmpty(),
|
||||
defaultValue != null,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
isHidden,
|
||||
isAssignable
|
||||
).toLong()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user