Drop ClassKind.CLASS_OBJECT

Default and non-default objects now have ClassKind.OBJECT
This commit is contained in:
Pavel V. Talanov
2015-03-04 17:05:28 +03:00
parent f72f548a93
commit ed4c265564
17 changed files with 44 additions and 34 deletions
@@ -81,8 +81,8 @@ public class DescriptorSerializer {
public ProtoBuf.Class.Builder classProto(@NotNull ClassDescriptor classDescriptor) {
ProtoBuf.Class.Builder builder = ProtoBuf.Class.newBuilder();
int flags = Flags.getClassFlags(hasAnnotations(classDescriptor), classDescriptor.getVisibility(),
classDescriptor.getModality(), classDescriptor.getKind(), classDescriptor.isInner());
int flags = Flags.getClassFlags(hasAnnotations(classDescriptor), classDescriptor.getVisibility(), classDescriptor.getModality(),
classDescriptor.getKind(), classDescriptor.isInner(), classDescriptor.isDefaultObject());
builder.setFlags(flags);
builder.setFqName(getClassId(classDescriptor));
@@ -73,17 +73,20 @@ public class Flags {
Visibility visibility,
Modality modality,
ClassKind kind,
boolean inner
boolean inner,
boolean isDefaultObject
) {
return HAS_ANNOTATIONS.toFlags(hasAnnotations)
| MODALITY.toFlags(modality(modality))
| VISIBILITY.toFlags(visibility(visibility))
| CLASS_KIND.toFlags(classKind(kind))
| CLASS_KIND.toFlags(classKind(kind, isDefaultObject))
| INNER.toFlags(inner)
;
}
private static ProtoBuf.Class.Kind classKind(ClassKind kind) {
private static ProtoBuf.Class.Kind classKind(ClassKind kind, boolean isDefaultObject) {
if (isDefaultObject) return ProtoBuf.Class.Kind.CLASS_OBJECT;
switch (kind) {
case CLASS:
return ProtoBuf.Class.Kind.CLASS;
@@ -97,8 +100,6 @@ public class Flags {
return ProtoBuf.Class.Kind.ANNOTATION_CLASS;
case OBJECT:
return ProtoBuf.Class.Kind.OBJECT;
case CLASS_OBJECT:
return ProtoBuf.Class.Kind.CLASS_OBJECT;
}
throw new IllegalArgumentException("Unknown class kind: " + kind);
}
@@ -45,7 +45,9 @@ public class DeserializedClassDescriptor(
) {
private val modality = deserialization.modality(Flags.MODALITY.get(classProto.getFlags()))
private val visibility = deserialization.visibility(Flags.VISIBILITY.get(classProto.getFlags()))
private val kind = deserialization.classKind(Flags.CLASS_KIND.get(classProto.getFlags()))
private val kindFromProto = Flags.CLASS_KIND.get(classProto.getFlags())
private val kind = deserialization.classKind(kindFromProto)
private val isDefault = kindFromProto == ProtoBuf.Class.Kind.CLASS_OBJECT
private val isInner = Flags.INNER.get(classProto.getFlags())
val c = outerContext.childContext(this, classProto.getTypeParameterList(), nameResolver)
@@ -88,7 +90,7 @@ public class DeserializedClassDescriptor(
override fun getStaticScope() = staticScope
override fun isDefaultObject(): Boolean = getKind() == ClassKind.CLASS_OBJECT
override fun isDefaultObject(): Boolean = isDefault
private fun computePrimaryConstructor(): ConstructorDescriptor? {
if (!classProto.hasPrimaryConstructor()) return null
@@ -52,8 +52,7 @@ public fun classKind(kind: ProtoBuf.Class.Kind): ClassKind = when (kind) {
ProtoBuf.Class.Kind.ENUM_CLASS -> ClassKind.ENUM_CLASS
ProtoBuf.Class.Kind.ENUM_ENTRY -> ClassKind.ENUM_ENTRY
ProtoBuf.Class.Kind.ANNOTATION_CLASS -> ClassKind.ANNOTATION_CLASS
ProtoBuf.Class.Kind.OBJECT -> ClassKind.OBJECT
ProtoBuf.Class.Kind.CLASS_OBJECT -> ClassKind.CLASS_OBJECT
ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> ClassKind.OBJECT
}
fun variance(variance: TypeParameter.Variance) = when (variance) {