Make lookup storage addAll order independent

Lookup storage output files could differ for projects
with different absolute paths.
This happened because, paths for lookups were
relativized only before writing to the underlying storage.
Storing absolute paths in a hash table could
result in different order of adding files to the lookup storage.
This commit fixes the issue by sorting lookups and files in
LookupStorage#addAll

    #KT-32674 Fixed
This commit is contained in:
Alexey Tsvetkov
2019-07-14 20:39:15 +03:00
parent 57caca4b0e
commit a4c62d156f
7 changed files with 146 additions and 38 deletions
@@ -8,11 +8,8 @@ package org.jetbrains.kotlin.daemon.experimental
import com.intellij.util.containers.StringInterner
import kotlinx.coroutines.runBlocking
import org.jetbrains.kotlin.daemon.EventManager
import org.jetbrains.kotlin.daemon.common.*
import org.jetbrains.kotlin.daemon.common.experimental.CompilerCallbackServicesFacadeClientSide
import org.jetbrains.kotlin.daemon.common.DummyProfiler
import org.jetbrains.kotlin.daemon.common.Profiler
import org.jetbrains.kotlin.daemon.common.withMeasure
import org.jetbrains.kotlin.daemon.common.withMeasureBlocking
import org.jetbrains.kotlin.incremental.components.LookupInfo
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.components.Position
@@ -20,7 +17,7 @@ import org.jetbrains.kotlin.incremental.components.ScopeKind
class RemoteLookupTrackerClient(
val facade: CompilerCallbackServicesFacadeClientSide,
val facade: CompilerCallbackServicesFacadeAsync,
eventManager: EventManager,
val profiler: Profiler = DummyProfiler()
) : LookupTracker {