cs: skip return value changes for private methods

This commit is contained in:
anna
2010-09-10 21:50:09 +04:00
parent 734b3dd55a
commit 5f27df0847
5 changed files with 71 additions and 14 deletions
@@ -124,14 +124,7 @@ class JavaChangeInfoImpl implements JavaChangeInfo {
isVisibilityChanged = !method.hasModifierProperty(newVisibility);
isNameChanged = !newName.equals(this.oldName);
if (!method.isConstructor()){
try {
isReturnTypeChanged = !newReturnType.getType(this.method, manager).equals(this.method.getReturnType());
}
catch (IncorrectOperationException e) {
isReturnTypeChanged = true;
}
}
if (oldParameterNames.length != newParms.length){
isParameterSetOrOrderChanged = true;
}
@@ -216,6 +209,14 @@ class JavaChangeInfoImpl implements JavaChangeInfo {
oldParameterTypes[i] =
JavaPsiFacade.getInstance(parameter.getProject()).getElementFactory().createTypeElement(parameter.getType()).getText();
}
if (!method.isConstructor()){
try {
isReturnTypeChanged = !newReturnType.getType(this.method, method.getManager()).equals(this.method.getReturnType());
}
catch (IncorrectOperationException e) {
isReturnTypeChanged = true;
}
}
}
@NotNull
@@ -88,12 +88,33 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
parameterInfo.getTypeWrapper().getType(element, element.getManager()),
oldParameterIndex == -1 ? "intellijidearulezzz" : "");
}
if (info.isReturnTypeChanged()) {
final String visibility = info.getNewVisibility();
if (Comparing.strEqual(visibility, PsiModifier.PRIVATE) &&
!info.isArrayToVarargs() &&
!info.isExceptionSetOrOrderChanged() &&
!info.isExceptionSetChanged() &&
!info.isNameChanged() &&
!info.isParameterSetOrOrderChanged() &&
!info.isParameterNamesChanged() &&
!info.isParameterTypesChanged()) {
return null;
}
}
final MyJavaChangeInfo javaChangeInfo =
new MyJavaChangeInfo(newVisibility, method, newReturnType, parameterInfos, info.getNewExceptions(), info.getOldName()) {
@Override
protected void fillOldParams(PsiMethod method) {
oldParameterNames = info.getOldParameterNames();
oldParameterTypes = info.getOldParameterTypes();
if (!method.isConstructor()) {
try {
isReturnTypeChanged = info.isReturnTypeChanged || !info.getNewReturnType().equals(newReturnType);
}
catch (IncorrectOperationException e) {
isReturnTypeChanged = true;
}
}
}
};
javaChangeInfo.setSuperMethod(info.getSuperMethod());
@@ -201,6 +222,7 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
info.getNewExceptions(), info.getOldName()) {
@Override
protected void fillOldParams(PsiMethod method) {
super.fillOldParams(method);
oldParameterNames = info.getOldParameterNames();
oldParameterTypes = info.getOldParameterTypes();
}
@@ -0,0 +1,4 @@
class Test {
<caret> void foo() {
}
}
@@ -0,0 +1,4 @@
class Test {
private <caret> foo() {
}
}
@@ -24,13 +24,16 @@ import com.intellij.openapi.editor.actions.EditorActionUtil;
import com.intellij.psi.PsiManager;
import com.intellij.refactoring.changeSignature.ChangeSignatureGestureDetector;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import junit.framework.Assert;
import java.util.List;
/**
* User: anna
* Date: Sep 9, 2010
*/
public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase {
private void doTest(Runnable run) {
private void doTest(Runnable run, boolean shouldShow) {
myFixture.configureByFile("/refactoring/changeSignatureGesture/" + getTestName(false) + ".java");
final ChangeSignatureGestureDetector detector = ChangeSignatureGestureDetector.getInstance(getProject());
final Document document = myFixture.getEditor().getDocument();
@@ -39,9 +42,15 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase
detector.addDocListener(document);
run.run();
myFixture.doHighlighting();
final IntentionAction intention = myFixture.findSingleIntention("Change signature ...");
myFixture.launchAction(intention);
myFixture.checkResultByFile("/refactoring/changeSignatureGesture/" + getTestName(false) + "_after.java");
final String hint = "Change signature ...";
if (shouldShow) {
final IntentionAction intention = myFixture.findSingleIntention(hint);
myFixture.launchAction(intention);
myFixture.checkResultByFile("/refactoring/changeSignatureGesture/" + getTestName(false) + "_after.java");
} else {
final List<IntentionAction> intentionActions = myFixture.filterAvailableIntentions(hint);
Assert.assertEquals(true, intentionActions.isEmpty());
}
}
finally {
detector.removeDocListener(document);
@@ -71,7 +80,24 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase
public void run() {
myFixture.type(param);
}
});
}, true);
}
public void testReturnValue() {
doTypingNoBorderTest("void");
}
public void testModifier() {
doTypingNoBorderTest("private");
}
private void doTypingNoBorderTest(final String param) {
doTest(new Runnable() {
@Override
public void run() {
myFixture.type(param);
}
}, false);
}
public void testDeleteParamInSuperUsed() {
@@ -90,7 +116,7 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase
document.deleteString(selectionStart, selectionEnd);
editor.getCaretModel().moveToOffset(selectionStart);
}
});
}, true);
}
@Override