diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureHandler.java b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureHandler.java index cb0073ce632..14a7e9b8aeb 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureHandler.java @@ -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); }