From 1e6b3c5ae1711712902f744ff00eb86e41a3b273 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Wed, 20 Jan 2016 18:43:53 +0300 Subject: [PATCH] Add own PathStringDescriptor to compare paths properly on case-insensitive filesystems --- .../jetbrains/kotlin/incremental/IncrementalCacheImpl.kt | 3 +-- .../jetbrains/kotlin/incremental/storage/externalizers.kt | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/build/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt b/build/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt index bf21c709fb5..5ae2087ab18 100644 --- a/build/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt +++ b/build/src/org/jetbrains/kotlin/incremental/IncrementalCacheImpl.kt @@ -496,8 +496,7 @@ open class IncrementalCacheImpl( override fun dumpValue(value: String): String = value } - // TODO: find how to deal with PathStringDescriptor - it seems too deeply rooted in jps - inner class SourceToClassesMap(storageFile: File) : BasicStringMap>(storageFile, /* PathStringDescriptor.INSTANCE,*/ StringCollectionExternalizer) { + inner class SourceToClassesMap(storageFile: File) : BasicStringMap>(storageFile, PathStringDescriptor, StringCollectionExternalizer) { fun clearOutputsForSource(sourceFile: File) { remove(sourceFile.absolutePath) } diff --git a/build/src/org/jetbrains/kotlin/incremental/storage/externalizers.kt b/build/src/org/jetbrains/kotlin/incremental/storage/externalizers.kt index f8d3f1be299..e4fe07a65be 100644 --- a/build/src/org/jetbrains/kotlin/incremental/storage/externalizers.kt +++ b/build/src/org/jetbrains/kotlin/incremental/storage/externalizers.kt @@ -171,6 +171,12 @@ object IntExternalizer : DataExternalizer { } } +object PathStringDescriptor : EnumeratorStringDescriptor() { + override fun getHashCode(value: String) = FileUtil.pathHashCode(value) + + override fun isEqual(val1: String, val2: String?) = FileUtil.pathsEqual(val1, val2) +} + object FileKeyDescriptor : KeyDescriptor { override fun read(input: DataInput): File = File(input.readUTF())