mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
Change Signature dialog: more prompt errors/warnings reporting
This commit is contained in:
+28
-2
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user