From 3fcf6e77196f6c8f77826e42aa53d1794250eb2a Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 10 Oct 2018 13:51:19 +0300 Subject: [PATCH] Change Signature: Clear callback after the call Retaining the callback leads to the leak of obsolete resolve data --- .../changeSignature/KotlinChangeSignatureProcessor.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt index ce6a22f61b0..5a0d438947e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureProcessor.kt @@ -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): UsageViewDescriptor { val subject = if (ktChangeInfo.kind.isConstructor) "constructor" else "function" return KotlinUsagesViewDescriptor(myChangeInfo.method, RefactoringBundle.message("0.to.change.signature", subject))