Serialize flags
This commit is contained in:
+7
-3
@@ -212,6 +212,7 @@ public class DescriptorSerializer {
|
||||
hasAnnotations,
|
||||
descriptor.getVisibility(),
|
||||
descriptor.getModality(),
|
||||
false,
|
||||
false
|
||||
);
|
||||
|
||||
@@ -284,7 +285,8 @@ public class DescriptorSerializer {
|
||||
|
||||
int flags = Flags.getFunctionFlags(
|
||||
hasAnnotations(descriptor), descriptor.getVisibility(), descriptor.getModality(), descriptor.getKind(),
|
||||
descriptor.isOperator(), descriptor.isInfix()
|
||||
descriptor.isOperator(), descriptor.isInfix(), descriptor.isInline(), descriptor.isTailrec(),
|
||||
descriptor.isExternal()
|
||||
);
|
||||
if (flags != builder.getFlags()) {
|
||||
builder.setFlags(flags);
|
||||
@@ -356,7 +358,8 @@ public class DescriptorSerializer {
|
||||
hasAnnotations(accessor),
|
||||
accessor.getVisibility(),
|
||||
accessor.getModality(),
|
||||
!accessor.isDefault()
|
||||
!accessor.isDefault(),
|
||||
accessor.isExternal()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -364,7 +367,8 @@ public class DescriptorSerializer {
|
||||
private ProtoBuf.ValueParameter.Builder valueParameter(@NotNull ValueParameterDescriptor descriptor) {
|
||||
ProtoBuf.ValueParameter.Builder builder = ProtoBuf.ValueParameter.newBuilder();
|
||||
|
||||
int flags = Flags.getValueParameterFlags(hasAnnotations(descriptor), descriptor.declaresDefaultValue());
|
||||
int flags = Flags.getValueParameterFlags(hasAnnotations(descriptor), descriptor.declaresDefaultValue(),
|
||||
descriptor.isCrossinline(), descriptor.isNoinline());
|
||||
if (flags != builder.getFlags()) {
|
||||
builder.setFlags(flags);
|
||||
}
|
||||
|
||||
@@ -45,4 +45,10 @@ public interface FunctionDescriptor extends CallableMemberDescriptor {
|
||||
boolean isOperator();
|
||||
|
||||
boolean isInfix();
|
||||
|
||||
boolean isInline();
|
||||
|
||||
boolean isTailrec();
|
||||
|
||||
boolean isExternal();
|
||||
}
|
||||
|
||||
@@ -45,4 +45,6 @@ public interface PropertyAccessorDescriptor extends FunctionDescriptor {
|
||||
Kind kind,
|
||||
boolean copyOverrides
|
||||
);
|
||||
|
||||
boolean isExternal();
|
||||
}
|
||||
|
||||
@@ -59,4 +59,8 @@ public interface ValueParameterDescriptor extends VariableDescriptor, ParameterD
|
||||
@NotNull
|
||||
@Override
|
||||
Collection<? extends ValueParameterDescriptor> getOverriddenDescriptors();
|
||||
|
||||
boolean isCrossinline();
|
||||
|
||||
boolean isNoinline();
|
||||
}
|
||||
|
||||
@@ -143,7 +143,10 @@ public class Flags {
|
||||
@NotNull Modality modality,
|
||||
@NotNull CallableMemberDescriptor.Kind memberKind,
|
||||
boolean isOperator,
|
||||
boolean isInfix
|
||||
boolean isInfix,
|
||||
boolean isInline,
|
||||
boolean isTailrec,
|
||||
boolean isExternal
|
||||
) {
|
||||
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
|
||||
| VISIBILITY.toFlags(visibility(visibility))
|
||||
@@ -151,6 +154,9 @@ public class Flags {
|
||||
| MEMBER_KIND.toFlags(memberKind(memberKind))
|
||||
| IS_OPERATOR.toFlags(isOperator)
|
||||
| IS_INFIX.toFlags(isInfix)
|
||||
| IS_INLINE.toFlags(isInline)
|
||||
| IS_TAILREC.toFlags(isTailrec)
|
||||
| IS_EXTERNAL_FUNCTION.toFlags(isExternal)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -183,12 +189,14 @@ public class Flags {
|
||||
boolean hasAnnotations,
|
||||
@NotNull Visibility visibility,
|
||||
@NotNull Modality modality,
|
||||
boolean isNotDefault
|
||||
boolean isNotDefault,
|
||||
boolean isExternal
|
||||
) {
|
||||
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
|
||||
| MODALITY.toFlags(modality(modality))
|
||||
| VISIBILITY.toFlags(visibility(visibility))
|
||||
| IS_NOT_DEFAULT.toFlags(isNotDefault)
|
||||
| IS_EXTERNAL_ACCESSOR.toFlags(isExternal)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -245,9 +253,16 @@ public class Flags {
|
||||
throw new IllegalArgumentException("Unknown member kind: " + kind);
|
||||
}
|
||||
|
||||
public static int getValueParameterFlags(boolean hasAnnotations, boolean declaresDefaultValue) {
|
||||
public static int getValueParameterFlags(
|
||||
boolean hasAnnotations,
|
||||
boolean declaresDefaultValue,
|
||||
boolean isCrossinline,
|
||||
boolean isNoinline
|
||||
) {
|
||||
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
|
||||
| DECLARES_DEFAULT_VALUE.toFlags(declaresDefaultValue)
|
||||
| IS_CROSSINLINE.toFlags(isCrossinline)
|
||||
| IS_NOINLINE.toFlags(isNoinline)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user