Cleaned up deserialization reachability loop a little.

This commit is contained in:
Alexander Gorshenev
2019-01-23 14:06:39 +03:00
committed by alexander-gorshenev
parent cfe153c742
commit 2736876919
@@ -212,7 +212,6 @@ class KonanIrModuleDeserializer(
reachableTopLevels.add(topLevelKey) reachableTopLevels.add(topLevelKey)
// TODO: This is a mess. Cleanup!
do { do {
val key = reachableTopLevels.first() val key = reachableTopLevels.first()
@@ -221,21 +220,15 @@ class KonanIrModuleDeserializer(
continue continue
} }
val previousModuleDescriptor = deserializedModuleDescriptor if (key.moduleOfOrigin != null) {
deserializedModuleDescriptor = key.moduleOfOrigin deserializedModuleDescriptor = key.moduleOfOrigin
val reachable = deserializeTopLevelDeclaration(key)
if (deserializedModuleDescriptor == null) { reversedFileIndex[key]!!.declarations.add(reachable)
deserializedModuleDescriptor = previousModuleDescriptor } else {
reachableTopLevels.remove(key) // The key.moduleOrigin is null for uniqIds that we haven't seen in any of the library headers.
deserializedTopLevels.add(key) // Just skip it for now and handle it elsewhere.
continue
} }
val reachable = deserializeTopLevelDeclaration(key)
deserializedModuleDescriptor = previousModuleDescriptor
reversedFileIndex[key]!!.declarations.add(reachable)
reachableTopLevels.remove(key) reachableTopLevels.remove(key)
deserializedTopLevels.add(key) deserializedTopLevels.add(key)
} while (reachableTopLevels.isNotEmpty()) } while (reachableTopLevels.isNotEmpty())