Change Signature dialog: more prompt errors/warnings reporting

This commit is contained in:
Kirill.Safonov
2010-09-10 16:32:57 +04:00
parent 9a51778f8a
commit d222c127b7
5 changed files with 40 additions and 37 deletions
@@ -212,8 +212,9 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
@Override
protected PsiCodeFragment createReturnTypeCodeFragment() {
return JavaPsiFacade.getInstance(myProject).getElementFactory()
.createTypeCodeFragment(myMethod.getReturnTypeText(), myMethod.getMethod(), true, true);
final PsiTypeElement typeElement = myMethod.getMethod().getReturnTypeElement();
String text = typeElement != null ? typeElement.getText() : "";
return JavaPsiFacade.getInstance(myProject).getElementFactory().createTypeCodeFragment(text, myMethod.getMethod(), true, true);
}
@Override
@@ -318,6 +319,31 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
}
}
// warnings
try {
if (!myMethod.isConstructor()) {
if (!RefactoringUtil.isResolvableType(((PsiTypeCodeFragment)myReturnTypeCodeFragment).getType())) {
if (Messages.showOkCancelDialog(myProject, RefactoringBundle
.message("changeSignature.cannot.resolve.return.type", myReturnTypeCodeFragment.getText()),
RefactoringBundle.message("changeSignature.refactoring.name"), Messages.getWarningIcon()) != 0) {
return EXIT_SILENTLY;
}
}
}
for (ParameterTableModelItemBase<ParameterInfoImpl> 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;
}
@@ -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<ParameterInfoImpl>
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();