Change Signature: Clear callback after the call

Retaining the callback leads to the leak of obsolete resolve data
This commit is contained in:
Alexey Sedunov
2018-10-10 13:51:19 +03:00
parent c3af3cc482
commit 3fcf6e7719
@@ -45,6 +45,16 @@ class KotlinChangeSignatureProcessor(
val ktChangeInfo
get() = changeInfo.delegate!!
override fun setPrepareSuccessfulSwingThreadCallback(callback: Runnable?) {
val actualCallback = if (callback != null) {
Runnable {
callback.run()
setPrepareSuccessfulSwingThreadCallback(null)
}
} else null
super.setPrepareSuccessfulSwingThreadCallback(actualCallback)
}
override fun createUsageViewDescriptor(usages: Array<UsageInfo>): UsageViewDescriptor {
val subject = if (ktChangeInfo.kind.isConstructor) "constructor" else "function"
return KotlinUsagesViewDescriptor(myChangeInfo.method, RefactoringBundle.message("0.to.change.signature", subject))