mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-161217 (False positive 'Unnecessary call to String.valueOf()')
This commit is contained in:
+18
-14
@@ -120,7 +120,7 @@ public class UnnecessaryCallToStringValueOfInspection extends BaseInspection imp
|
||||
if (arguments.length != 1) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression argument = arguments[0];
|
||||
final PsiExpression argument = ParenthesesUtils.stripParentheses(arguments[0]);
|
||||
final PsiType argumentType = argument.getType();
|
||||
if (argumentType instanceof PsiArrayType) {
|
||||
final PsiArrayType arrayType = (PsiArrayType)argumentType;
|
||||
@@ -129,23 +129,27 @@ public class UnnecessaryCallToStringValueOfInspection extends BaseInspection imp
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!TypeUtils.isJavaLangString(argumentType)) {
|
||||
final PsiMethod method = expression.resolveMethod();
|
||||
if (method == null) {
|
||||
return;
|
||||
}
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (aClass == null) {
|
||||
return;
|
||||
}
|
||||
final String qualifiedName = aClass.getQualifiedName();
|
||||
if (!CommonClassNames.JAVA_LANG_STRING.equals(qualifiedName)) {
|
||||
return;
|
||||
}
|
||||
if (!TypeUtils.isJavaLangString(argumentType)) {
|
||||
final boolean throwable = TypeUtils.expressionHasTypeOrSubtype(argument, "java.lang.Throwable");
|
||||
if (ExpressionUtils.isConversionToStringNecessary(expression, throwable)) {
|
||||
return;
|
||||
}
|
||||
final PsiMethod method = expression.resolveMethod();
|
||||
if (method == null) {
|
||||
return;
|
||||
}
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (aClass == null) {
|
||||
return;
|
||||
}
|
||||
final String qualifiedName = aClass.getQualifiedName();
|
||||
if (!CommonClassNames.JAVA_LANG_STRING.equals(qualifiedName)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (argument instanceof PsiReferenceExpression || argument instanceof PsiMethodCallExpression){
|
||||
// don't warn because unwrapping when null would change semantics
|
||||
return;
|
||||
}
|
||||
registerError(expression, calculateReplacementText(argument));
|
||||
}
|
||||
|
||||
+8
@@ -50,4 +50,12 @@ public class UnnecessaryCallToStringValueOf {
|
||||
':' +
|
||||
<warning descr="'String.valueOf(1)' can be simplified to '1'">String.valueOf(1)</warning>;
|
||||
}
|
||||
|
||||
void regression() {
|
||||
String s = "" + Integer.valueOf("asdf") + String.valueOf((nothing()));
|
||||
}
|
||||
|
||||
Object nothing() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user