mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
CharsetObjectCanBeUsedInspection: remove qualifier in static import
Fixes IDEA-193573 IDEA doesn't recornize static import on replacing by StandardCharsets
This commit is contained in:
+13
-2
@@ -5,6 +5,7 @@ import com.intellij.codeInsight.ExceptionUtil;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.DeleteCatchFix;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.DeleteMultiCatchFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -13,6 +14,7 @@ import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import com.siyeh.ig.psiutils.ImportUtils;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
@@ -230,8 +232,17 @@ public class CharsetObjectCanBeUsedInspection extends AbstractBaseJavaLocalInspe
|
||||
PsiElement anchor = PsiTreeUtil.getParentOfType(expression, PsiCallExpression.class);
|
||||
if (anchor == null) return;
|
||||
CommentTracker ct = new CommentTracker();
|
||||
JavaCodeStyleManager.getInstance(project)
|
||||
.shortenClassReferences(ct.replaceAndRestoreComments(expression, "java.nio.charset." + myConstantName));
|
||||
String replacement = "java.nio.charset." + myConstantName;
|
||||
PsiReferenceExpression ref = (PsiReferenceExpression)ct.replaceAndRestoreComments(expression, replacement);
|
||||
PsiField field = ObjectUtils.tryCast(ref.resolve(), PsiField.class);
|
||||
PsiExpression qualifier = ref.getQualifierExpression();
|
||||
if (field != null && qualifier != null && ImportUtils.isStaticallyImported(field, ref)) {
|
||||
PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(project).getResolveHelper();
|
||||
if (field.equals(resolveHelper.resolveAccessibleReferencedVariable(StringUtil.getShortName(myConstantName), ref))) {
|
||||
qualifier.delete();
|
||||
}
|
||||
}
|
||||
JavaCodeStyleManager.getInstance(project).shortenClassReferences(ref);
|
||||
while (true) {
|
||||
PsiTryStatement tryStatement =
|
||||
PsiTreeUtil.getParentOfType(anchor, PsiTryStatement.class, true, PsiMember.class, PsiLambdaExpression.class);
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// "Replace with 'StandardCharsets.UTF_8'" "true"
|
||||
import static java.nio.charset.StandardCharsets.*;
|
||||
|
||||
class Test {
|
||||
void test(byte[] bytes) throws Exception {
|
||||
String string = new String(bytes, UTF_8);
|
||||
System.out.println(string);
|
||||
string.getBytes(UTF_8);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// "Replace with 'StandardCharsets.UTF_8'" "true"
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static java.nio.charset.StandardCharsets.*;
|
||||
|
||||
class Test {
|
||||
void test(byte[] bytes) throws Exception {
|
||||
int UTF_8 = 1;
|
||||
String string = new String(bytes, StandardCharsets.UTF_8);
|
||||
System.out.println(string);
|
||||
string.getBytes(UTF_16);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// "Replace with 'StandardCharsets.UTF_8'" "true"
|
||||
import static java.nio.charset.StandardCharsets.*;
|
||||
|
||||
class Test {
|
||||
void test(byte[] bytes) throws Exception {
|
||||
String string = new String(bytes, "UTF<caret>-8");
|
||||
System.out.println(string);
|
||||
string.getBytes(UTF_8);
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// "Replace with 'StandardCharsets.UTF_8'" "true"
|
||||
import static java.nio.charset.StandardCharsets.*;
|
||||
|
||||
class Test {
|
||||
void test(byte[] bytes) throws Exception {
|
||||
int UTF_8 = 1;
|
||||
String string = new String(bytes, "UTF<caret>-8");
|
||||
System.out.println(string);
|
||||
string.getBytes(UTF_16);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user