Recompile everything if new function is added
This commit is contained in:
@@ -233,6 +233,10 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
|
|||||||
|
|
||||||
private fun ChangesInfo.doProcessChanges() {
|
private fun ChangesInfo.doProcessChanges() {
|
||||||
when {
|
when {
|
||||||
|
inlineAdded -> {
|
||||||
|
recompileEverything()
|
||||||
|
return
|
||||||
|
}
|
||||||
constantsChanged -> recompileOtherAndDependents()
|
constantsChanged -> recompileOtherAndDependents()
|
||||||
protoChanged -> recompileOtherKotlinInChunk()
|
protoChanged -> recompileOtherKotlinInChunk()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -550,6 +550,7 @@ public class IncrementalCacheImpl(
|
|||||||
val internalName = className.internalName
|
val internalName = className.internalName
|
||||||
val oldMap = storage[internalName] ?: emptyMap()
|
val oldMap = storage[internalName] ?: emptyMap()
|
||||||
|
|
||||||
|
val added = hashSetOf<String>()
|
||||||
val changed = hashSetOf<String>()
|
val changed = hashSetOf<String>()
|
||||||
val allFunctions = oldMap.keySet() + newMap.keySet()
|
val allFunctions = oldMap.keySet() + newMap.keySet()
|
||||||
|
|
||||||
@@ -557,8 +558,9 @@ public class IncrementalCacheImpl(
|
|||||||
val oldHash = oldMap[fn]
|
val oldHash = oldMap[fn]
|
||||||
val newHash = newMap[fn]
|
val newHash = newMap[fn]
|
||||||
|
|
||||||
if (oldHash != newHash) {
|
when {
|
||||||
changed.add(fn)
|
oldHash == null -> added.add(fn)
|
||||||
|
oldHash != newHash -> changed.add(fn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -571,7 +573,8 @@ public class IncrementalCacheImpl(
|
|||||||
dirtyInlineFunctionsMap.put(className, changed.toList())
|
dirtyInlineFunctionsMap.put(className, changed.toList())
|
||||||
}
|
}
|
||||||
|
|
||||||
return ChangesInfo(inlineChanged = changed.isNotEmpty())
|
return ChangesInfo(inlineChanged = changed.isNotEmpty(),
|
||||||
|
inlineAdded = added.isNotEmpty())
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun remove(className: JvmClassName) {
|
public fun remove(className: JvmClassName) {
|
||||||
@@ -729,7 +732,8 @@ public class IncrementalCacheImpl(
|
|||||||
data class ChangesInfo(
|
data class ChangesInfo(
|
||||||
public val protoChanged: Boolean = false,
|
public val protoChanged: Boolean = false,
|
||||||
public val constantsChanged: Boolean = false,
|
public val constantsChanged: Boolean = false,
|
||||||
public val inlineChanged: Boolean = false
|
public val inlineChanged: Boolean = false,
|
||||||
|
public val inlineAdded: Boolean = false
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
public val NO_CHANGES: ChangesInfo = ChangesInfo()
|
public val NO_CHANGES: ChangesInfo = ChangesInfo()
|
||||||
@@ -738,7 +742,8 @@ data class ChangesInfo(
|
|||||||
public fun plus(other: ChangesInfo): ChangesInfo =
|
public fun plus(other: ChangesInfo): ChangesInfo =
|
||||||
ChangesInfo(protoChanged || other.protoChanged,
|
ChangesInfo(protoChanged || other.protoChanged,
|
||||||
constantsChanged || other.constantsChanged,
|
constantsChanged || other.constantsChanged,
|
||||||
inlineChanged || other.inlineChanged)
|
inlineChanged || other.inlineChanged,
|
||||||
|
inlineAdded || other.inlineAdded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user