preserve comments: Objects.requireNotNull replacement

This commit is contained in:
Anna.Kozlova
2017-11-27 18:05:19 +01:00
parent 6d20d8614a
commit a326a4ca94
4 changed files with 19 additions and 3 deletions
@@ -64,6 +64,15 @@ public class PsiReplacementUtil {
return styleManager.reformat(replacementExp);
}
public static PsiElement replaceExpressionAndShorten(@NotNull PsiExpression expression, @NotNull @NonNls String newExpressionText, CommentTracker tracker) {
final Project project = expression.getProject();
final PsiElement replacementExp = tracker.replaceAndRestoreComments(expression, newExpressionText);
final JavaCodeStyleManager javaCodeStyleManager = JavaCodeStyleManager.getInstance(project);
javaCodeStyleManager.shortenClassReferences(replacementExp);
final CodeStyleManager styleManager = CodeStyleManager.getInstance(project);
return styleManager.reformat(replacementExp);
}
/**
* Consider to use {@link #replaceStatement(PsiExpression, String, CommentTracker)} to preserve comments
*/
@@ -171,7 +171,10 @@ public class IfCanBeAssertionInspection extends BaseInspection {
if (!(condition instanceof PsiBinaryExpression)) return null;
PsiExpression nullComparedExpression = ExpressionUtils.getValueComparedWithNull((PsiBinaryExpression)condition);
if (nullComparedExpression == null) return null;
return new Replacer(text -> PsiReplacementUtil.replaceStatementAndShortenClassNames(ifStatement, text + ";"), nullComparedExpression, null);
CommentTracker tracker = new CommentTracker();
return new Replacer(text -> PsiReplacementUtil.replaceStatementAndShortenClassNames(ifStatement, text + ";", tracker),
tracker.markUnchanged(nullComparedExpression),
null);
} else {
PsiReferenceExpression ref = ObjectUtils.tryCast(descriptor.getPsiElement().getParent(), PsiReferenceExpression.class);
if (ref == null) return null;
@@ -185,7 +188,10 @@ public class IfCanBeAssertionInspection extends BaseInspection {
}
PsiExpression[] args = methodCall.getArgumentList().getExpressions();
if (args.length > 2) return null;
return new Replacer(text -> PsiReplacementUtil.replaceExpressionAndShorten(methodCall, text), args[0], args.length == 2 ? args[1] : null);
CommentTracker tracker = new CommentTracker();
return new Replacer(text -> PsiReplacementUtil.replaceExpressionAndShorten(methodCall, text, tracker),
tracker.markUnchanged(args[0]),
args.length == 2 ? tracker.markUnchanged(args[1]) : null);
}
}
@@ -19,6 +19,7 @@ import java.util.Objects;
class Parentheses {
void s(String s) {
//keep me
Objects.requireNonNull(s);
}
}
@@ -18,7 +18,7 @@ package com.siyeh.ipp.asserttoif.if_to_assert;
class Parentheses {
void s(String s) {
i<caret>f (s == null) {
throw (new NullPointerException(("s")));
throw (new NullPointerException(("s")));//keep me
}
}
}