Drop old enum entries from binary format

Original commit: fc74759231
This commit is contained in:
Alexander Udalov
2015-12-23 22:26:55 +03:00
parent dece44df86
commit 8d1a6b8c9f
3 changed files with 2 additions and 24 deletions
@@ -218,7 +218,7 @@ public class IncrementalCacheImpl(
public fun clearCacheForRemovedClasses(): CompilationResult { public fun clearCacheForRemovedClasses(): CompilationResult {
fun <T> T.getNonPrivateNames(nameResolver: NameResolver, vararg members: T.() -> List<MessageLite>) = fun <T> T.getNonPrivateNames(nameResolver: NameResolver, vararg members: T.() -> List<MessageLite>): Set<String> =
members.flatMap { this.it().filterNot { it.isPrivate }.names(nameResolver) }.toSet() members.flatMap { this.it().filterNot { it.isPrivate }.names(nameResolver) }.toSet()
fun createChangeInfo(className: JvmClassName): ChangeInfo? { fun createChangeInfo(className: JvmClassName): ChangeInfo? {
@@ -248,8 +248,7 @@ public class IncrementalCacheImpl(
ProtoBuf.Class::getConstructorList, ProtoBuf.Class::getConstructorList,
ProtoBuf.Class::getFunctionList, ProtoBuf.Class::getFunctionList,
ProtoBuf.Class::getPropertyList ProtoBuf.Class::getPropertyList
) + ) + classData.classProto.enumEntryList.map { classData.nameResolver.getString(it.name) }
classData.classProto.enumEntryNameList.map { classData.nameResolver.getString(it) }.toSet()
ChangeInfo.Removed(className.fqNameForClassNameWithoutDollars, memberNames) ChangeInfo.Removed(className.fqNameForClassNameWithoutDollars, memberNames)
} }
@@ -94,8 +94,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEqualsClassProperty(old, new)) return false if (!checkEqualsClassProperty(old, new)) return false
if (!checkEqualsClassEnumEntryName(old, new)) return false
if (!checkEqualsClassEnumEntry(old, new)) return false if (!checkEqualsClassEnumEntry(old, new)) return false
if (old.hasTypeTable() != new.hasTypeTable()) return false if (old.hasTypeTable() != new.hasTypeTable()) return false
@@ -122,7 +120,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
CONSTRUCTOR_LIST, CONSTRUCTOR_LIST,
FUNCTION_LIST, FUNCTION_LIST,
PROPERTY_LIST, PROPERTY_LIST,
ENUM_ENTRY_NAME_LIST,
ENUM_ENTRY_LIST, ENUM_ENTRY_LIST,
TYPE_TABLE, TYPE_TABLE,
CLASS_ANNOTATION_LIST CLASS_ANNOTATION_LIST
@@ -157,8 +154,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEqualsClassProperty(old, new)) result.add(ProtoBufClassKind.PROPERTY_LIST) if (!checkEqualsClassProperty(old, new)) result.add(ProtoBufClassKind.PROPERTY_LIST)
if (!checkEqualsClassEnumEntryName(old, new)) result.add(ProtoBufClassKind.ENUM_ENTRY_NAME_LIST)
if (!checkEqualsClassEnumEntry(old, new)) result.add(ProtoBufClassKind.ENUM_ENTRY_LIST) if (!checkEqualsClassEnumEntry(old, new)) result.add(ProtoBufClassKind.ENUM_ENTRY_LIST)
if (old.hasTypeTable() != new.hasTypeTable()) result.add(ProtoBufClassKind.TYPE_TABLE) if (old.hasTypeTable() != new.hasTypeTable()) result.add(ProtoBufClassKind.TYPE_TABLE)
@@ -673,16 +668,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true return true
} }
open fun checkEqualsClassEnumEntryName(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean {
if (old.enumEntryNameCount != new.enumEntryNameCount) return false
for(i in 0..old.enumEntryNameCount - 1) {
if (!checkStringEquals(old.getEnumEntryName(i), new.getEnumEntryName(i))) return false
}
return true
}
open fun checkEqualsClassEnumEntry(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean { open fun checkEqualsClassEnumEntry(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean {
if (old.enumEntryCount != new.enumEntryCount) return false if (old.enumEntryCount != new.enumEntryCount) return false
@@ -883,10 +868,6 @@ public fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (
hashCode = 31 * hashCode + getProperty(i).hashCode(stringIndexes, fqNameIndexes) hashCode = 31 * hashCode + getProperty(i).hashCode(stringIndexes, fqNameIndexes)
} }
for(i in 0..enumEntryNameCount - 1) {
hashCode = 31 * hashCode + stringIndexes(getEnumEntryName(i))
}
for(i in 0..enumEntryCount - 1) { for(i in 0..enumEntryCount - 1) {
hashCode = 31 * hashCode + getEnumEntry(i).hashCode(stringIndexes, fqNameIndexes) hashCode = 31 * hashCode + getEnumEntry(i).hashCode(stringIndexes, fqNameIndexes)
} }
@@ -206,8 +206,6 @@ private class DifferenceCalculatorForClass(oldData: ProtoMapValue, newData: Prot
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getFunctionList)) names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getFunctionList))
ProtoBufClassKind.PROPERTY_LIST -> ProtoBufClassKind.PROPERTY_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getPropertyList)) names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getPropertyList))
ProtoBufClassKind.ENUM_ENTRY_NAME_LIST ->
names.addAll(calcDifferenceForNames(oldProto.enumEntryNameList, newProto.enumEntryNameList))
ProtoBufClassKind.ENUM_ENTRY_LIST -> ProtoBufClassKind.ENUM_ENTRY_LIST ->
names.addAll(calcDifferenceForNames(oldProto.enumEntryList.map { it.name }, newProto.enumEntryList.map { it.name })) names.addAll(calcDifferenceForNames(oldProto.enumEntryList.map { it.name }, newProto.enumEntryList.map { it.name }))
ProtoBufClassKind.TYPE_TABLE -> { ProtoBufClassKind.TYPE_TABLE -> {