Change Signature: Fix original method info for Java method used in Kotlin
#KT-23714 Fixed
This commit is contained in:
+22
-8
@@ -21,10 +21,7 @@ import com.intellij.openapi.application.ApplicationManager
|
|||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.PsiElementFactory
|
|
||||||
import com.intellij.psi.PsiMethod
|
|
||||||
import com.intellij.psi.PsiType
|
|
||||||
import com.intellij.refactoring.BaseRefactoringProcessor
|
import com.intellij.refactoring.BaseRefactoringProcessor
|
||||||
import com.intellij.refactoring.changeSignature.*
|
import com.intellij.refactoring.changeSignature.*
|
||||||
import com.intellij.refactoring.util.CanonicalTypes
|
import com.intellij.refactoring.util.CanonicalTypes
|
||||||
@@ -118,11 +115,28 @@ class KotlinChangeSignature(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val (preview, javaChangeInfo) = getPreviewInfoForJavaMethod(descriptor)
|
val (preview, javaChangeInfo) = getPreviewInfoForJavaMethod(descriptor)
|
||||||
object: JavaChangeSignatureDialog(project, JavaMethodDescriptor(preview), false, null) {
|
val javaDescriptor = object : JavaMethodDescriptor(preview) {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
override fun getParameters() = javaChangeInfo.newParameters.toMutableList() as MutableList<ParameterInfoImpl>
|
||||||
|
}
|
||||||
|
object: JavaChangeSignatureDialog(project, javaDescriptor, false, null) {
|
||||||
override fun createRefactoringProcessor(): BaseRefactoringProcessor? {
|
override fun createRefactoringProcessor(): BaseRefactoringProcessor? {
|
||||||
val processor = super.createRefactoringProcessor()
|
val parameters = parameters
|
||||||
(processor as? ChangeSignatureProcessor)?.changeInfo?.updateMethod(javaChangeInfo.method)
|
LOG.assertTrue(myMethod.method.isValid)
|
||||||
return processor
|
val newJavaChangeInfo = JavaChangeInfoImpl(
|
||||||
|
visibility ?: VisibilityUtil.getVisibilityModifier(myMethod.method.modifierList),
|
||||||
|
javaChangeInfo.method,
|
||||||
|
methodName,
|
||||||
|
returnType ?: CanonicalTypes.createTypeWrapper(PsiType.VOID),
|
||||||
|
parameters.toTypedArray(),
|
||||||
|
exceptions,
|
||||||
|
isGenerateDelegate,
|
||||||
|
myMethodsToPropagateParameters ?: HashSet(),
|
||||||
|
myMethodsToPropagateExceptions ?: HashSet()
|
||||||
|
).also {
|
||||||
|
it.setCheckUnusedParameter()
|
||||||
|
}
|
||||||
|
return ChangeSignatureProcessor(myProject, newJavaChangeInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user