From d222c127b7159839e0416f8d2be172406051e0fc Mon Sep 17 00:00:00 2001 From: "Kirill.Safonov" Date: Thu, 9 Sep 2010 15:21:24 +0400 Subject: [PATCH] Change Signature dialog: more prompt errors/warnings reporting --- .../JavaChangeSignatureDialog.java | 30 +++++++++++++++++-- .../changeSignature/JavaMethodDescriptor.java | 9 ------ .../ChangeSignatureDialogBase.java | 28 +++++------------ .../changeSignature/MethodDescriptor.java | 3 -- .../src/messages/RefactoringBundle.properties | 7 +++-- 5 files changed, 40 insertions(+), 37 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java index af47d9aa0160..53ade20d2844 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDialog.java @@ -212,8 +212,9 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase item : parameterInfos) { + + if (!RefactoringUtil.isResolvableType(((PsiTypeCodeFragment)item.typeCodeFragment).getType())) { + if (Messages.showOkCancelDialog(myProject, RefactoringBundle + .message("changeSignature.cannot.resolve.parameter.type", item.typeCodeFragment.getText(), item.parameter.getName()), + RefactoringBundle.message("changeSignature.refactoring.name"), Messages.getWarningIcon()) != + 0) { + return EXIT_SILENTLY; + } + } + } + } + catch (PsiTypeCodeFragment.IncorrectTypeException ignored) { + } return null; } diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaMethodDescriptor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaMethodDescriptor.java index 604eab432eed..7192d6f493c2 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaMethodDescriptor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaMethodDescriptor.java @@ -18,9 +18,7 @@ package com.intellij.refactoring.changeSignature; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiParameter; -import com.intellij.psi.PsiTypeElement; import com.intellij.util.VisibilityUtil; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -71,13 +69,6 @@ public class JavaMethodDescriptor implements MethodDescriptor return myMethod.getParameterList().getParametersCount(); } - @Nullable - @Override - public String getReturnTypeText() { - final PsiTypeElement typeElement = myMethod.getReturnTypeElement(); - return typeElement != null ? typeElement.getText() : null; - } - @Override public boolean canChangeVisibility() { PsiClass containingClass = myMethod.getContainingClass(); diff --git a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDialogBase.java b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDialogBase.java index de9e2cc68bbe..2cf402aab74e 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDialogBase.java +++ b/platform/lang-impl/src/com/intellij/refactoring/changeSignature/ChangeSignatureDialogBase.java @@ -59,9 +59,11 @@ import java.util.StringTokenizer; public abstract class ChangeSignatureDialogBase

> extends RefactoringDialog { + protected static final String EXIT_SILENTLY = ""; + protected final D myMethod; private final boolean myAllowDelegation; - private EditorTextField myNameField; + protected EditorTextField myNameField; protected EditorTextField myReturnTypeField; protected TableView> myParametersTable; protected final ParameterTableModelBase

myParametersTableModel; @@ -382,14 +384,13 @@ public abstract class ChangeSignatureDialogBase

{ PsiElement getMethod(); - @Nullable - String getReturnTypeText(); - boolean canChangeVisibility(); } diff --git a/platform/platform-resources-en/src/messages/RefactoringBundle.properties b/platform/platform-resources-en/src/messages/RefactoringBundle.properties index e9ad56e17820..62c8c9b9cba3 100644 --- a/platform/platform-resources-en/src/messages/RefactoringBundle.properties +++ b/platform/platform-resources-en/src/messages/RefactoringBundle.properties @@ -52,13 +52,14 @@ signature.preview.border.title=Signature Preview changeSignature.parameters.wont.propagate=Recursive propagation of parameter changes won't be performed changeSignature.exceptions.wont.propagate=Recursive propagation of exception changes won't be performed changeSignature.wrong.return.type=Wrong return type: ''{0}'' -changeSignature.no.return.type=Specify return type +changeSignature.no.return.type=Return type is not specified +changeSignature.cannot.resolve.return.type=Return type ''{0}'' cannot be resolved.\nContinue? changeSignature.wrong.type.for.parameter=Wrong type: ''{0}'' for parameter ''{1}'' changeSignature.wrong.type.for.exception=Wrong type: ''{0}'' for exception changeSignature.vararg.not.last=Vararg parameter should be the last in method signature changeSignature.no.default.value=New parameter ''{0}'' has been added.\nSpecify a default value to be used in all existing calls of this method. -changeSignature.not.throwable.type=Wrong type: ''{0}'' for exception, should extend java.lang.Throwable -changeSignature.cannot.resolve.type=Type ''{0}'' cannot be resolved.\nContinue? +changeSignature.not.throwable.type=Wrong type ''{0}'' for exception, should extend java.lang.Throwable +changeSignature.cannot.resolve.parameter.type=Type ''{0}'' for parameter ''{1}'' cannot be resolved.\nContinue? search.in.comments.and.strings=Search in comments and &strings search.for.text.occurrences=Search for &text occurrences visibility.as.is=&As is