Change Signature: Allow running Java change signature from Kotlin usage/override
This commit is contained in:
+17
-1
@@ -24,18 +24,25 @@ import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureHandler;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureUtil;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.jet.asJava.AsJavaPackage;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaCallableMemberDescriptor;
|
||||
import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil;
|
||||
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.jet.plugin.refactoring.JetRefactoringBundle;
|
||||
|
||||
@@ -94,10 +101,19 @@ public class JetChangeSignatureHandler implements ChangeSignatureHandler {
|
||||
@Nullable Editor editor
|
||||
) {
|
||||
BindingContext bindingContext = ResolvePackage.analyze(element);
|
||||
|
||||
FunctionDescriptor functionDescriptor = findDescriptor(element, project, editor, bindingContext);
|
||||
if (functionDescriptor == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (functionDescriptor instanceof JavaCallableMemberDescriptor) {
|
||||
PsiElement declaration = DescriptorToDeclarationUtil.INSTANCE$.getDeclaration(project, functionDescriptor);
|
||||
assert declaration instanceof PsiMethod : "PsiMethod expected: " + functionDescriptor;
|
||||
ChangeSignatureUtil.invokeChangeSignatureOn((PsiMethod) declaration, project);
|
||||
return;
|
||||
}
|
||||
|
||||
runChangeSignature(project, functionDescriptor, emptyConfiguration(), bindingContext, context, null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user