From 6307798cb8a6af4acd74eb3d0811b11345cddf87 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 9 Sep 2010 17:41:43 +0400 Subject: [PATCH] cs gestures: do not suggest to change signature for new method (without body) --- .../changeSignature/JavaChangeSignatureDetector.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java index 92995c8fd09d..3a3f8f68cc83 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureDetector.java @@ -45,7 +45,7 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec public ChangeInfo createCurrentChangeSignature(final @NotNull PsiElement element, final @Nullable ChangeInfo changeInfo) { PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class); - if (method != null && isInsideMethodSignature(element, method.getBody())) { + if (method != null && isInsideMethodSignature(element, method)) { final String newVisibility = VisibilityUtil.getVisibilityModifier(method.getModifierList()); final PsiType returnType = method.getReturnType(); final CanonicalTypes.Type newReturnType = returnType != null ? CanonicalTypes.createTypeWrapper(returnType) : null; @@ -208,7 +208,11 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec return Comparing.equal(PsiTreeUtil.getParentOfType(element, PsiMethod.class), bannedInfo.getMethod()); } - private static boolean isInsideMethodSignature(PsiElement element, PsiCodeBlock body) { - return body == null || element.getTextOffset() < body.getTextOffset(); + private static boolean isInsideMethodSignature(PsiElement element, @NotNull PsiMethod method) { + final PsiCodeBlock body = method.getBody(); + if (body != null) { + return element.getTextOffset() < body.getTextOffset() && element.getTextOffset() > method.getModifierList().getTextRange().getEndOffset(); + } + return method.hasModifierProperty(PsiModifier.ABSTRACT); } }