[codeInsight] IDEA-240288 Inspection for StringBuilder.toString().substring()

This patch simplifies the `RedundantStringOperationInspection#isOperandOfStringType` method by checking if the type of the passed operand is java.lang.String. The check is the same for any passed operand since they are of the `PsiExpression` type and hence poses the `PsiExpression#getType` method.

Signed-off-by: Nikita Eshkeev <nikita.eshkeev@jetbrains.com>

GitOrigin-RevId: bcd489d41d1272877a1bbf6032ef837a228a18e1
This commit is contained in:
Nikita Eshkeev
2020-05-13 03:14:11 +03:00
committed by intellij-monorepo-bot
parent d936b545a5
commit 06fbc3bdd2
5 changed files with 72 additions and 38 deletions

View File

@@ -3,7 +3,9 @@
class StringBuilderToStringArgs {
private static final String CONST_STRING_VAL = "Hello";
static String str() { return ""; }
static <T> T gen(T a) { return a; }
static void stringBuilderToStringArgs(StringBuilder sb) {
/* 2 */
@@ -83,6 +85,24 @@ class StringBuilderToStringArgs {
System.out.println(("Hello" + sb + (sb.toString() + ((sb.toString())))));
System.out.println(("Hello" + sb + (sb + ((sb) + "Hello"))));
System.out.println(("Hello" + sb + (sb + ((sb.toString()) + 42))));
}
System.out.println((("Hello")) + sb + (sb + ((sb.toString()) + 42))));
/* 2 */
/* 3 */
/* 4 */
System.out.println(gen("Hello") + /* 1 */sb/* 5 */);
/* 2 */
/* 3 */
/* 4 */
System.out.println(/* 1 */sb/* 5 */ + gen("Hello"));
/* 2 */
/* 3 */
/* 4 */
System.out.println(gen("Hello") + /* 1 */sb/* 5 */ + gen("Hello"));
System.out.println(gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */);
System.out.println(/* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42));
System.out.println(gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42));
}
}

View File

@@ -5,6 +5,7 @@ class StringBuilderToStringAssign {
public static final String CONST_STRING_VAL = "Hello";
static String str() { return ""; }
static <T> T gen(T a) { return a; }
static void stringBuilderToStringAssign(StringBuilder sb) {
String s1 = sb + "Hello";
@@ -83,7 +84,24 @@ class StringBuilderToStringAssign {
String s104 = ("Hello" + sb + (sb.toString() + ((sb.toString()))));
String s105 = ("Hello" + sb + (sb + ((sb) + "Hello")));
String s106 = ("Hello" + sb + (sb + ((sb.toString()) + 42)));
String s107 = ((("Hello")) + sb + (sb + ((sb.toString()) + 42)));
/* 2 */
/* 3 */
/* 4 */
String s181 = gen("Hello") + /* 1 */sb/* 5 */;
/* 2 */
/* 3 */
/* 4 */
String s182 = /* 1 */sb/* 5 */ + gen("Hello");
/* 2 */
/* 3 */
/* 4 */
String s183 = gen("Hello") + /* 1 */sb/* 5 */ + gen("Hello");
String s191 = gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */;
String s192 = /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42);
String s193 = gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42);
}
}

View File

@@ -3,7 +3,9 @@
class StringBuilderToStringArgs {
private static final String CONST_STRING_VAL = "Hello";
static String str() { return ""; }
static <T> T gen(T a) { return a; }
static void stringBuilderToStringArgs(StringBuilder sb) {
System.out.println(/* 1 */sb./* 2 */to<caret>String/* 3 */(/* 4 */)/* 5 */ + "Hello");
@@ -44,6 +46,15 @@ class StringBuilderToStringArgs {
System.out.println(("Hello" + sb.toString() + (sb.toString() + ((sb.toString())))));
System.out.println(("Hello" + sb.toString() + (sb.toString() + ((sb.toString()) + "Hello"))));
System.out.println(("Hello" + sb.toString() + (sb.toString() + ((sb.toString()) + 42))));
}
System.out.println((("Hello")) + sb.toString() + (sb.toString() + ((sb.toString()) + 42))));
System.out.println(gen("Hello") + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */);
System.out.println(/* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen("Hello"));
System.out.println(gen("Hello") + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen("Hello"));
System.out.println(gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */);
System.out.println(/* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42));
System.out.println(gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42));
}
}

View File

@@ -5,6 +5,7 @@ class StringBuilderToStringAssign {
public static final String CONST_STRING_VAL = "Hello";
static String str() { return ""; }
static <T> T gen(T a) { return a; }
static void stringBuilderToStringAssign(StringBuilder sb) {
String s1 = sb.<caret>toString() + "Hello";
@@ -47,7 +48,15 @@ class StringBuilderToStringAssign {
String s104 = ("Hello" + sb.toString() + (sb.toString() + ((sb.toString()))));
String s105 = ("Hello" + sb.toString() + (sb.toString() + ((sb.toString()) + "Hello")));
String s106 = ("Hello" + sb.toString() + (sb.toString() + ((sb.toString()) + 42)));
String s107 = ((("Hello")) + sb.toString() + (sb.toString() + ((sb.toString()) + 42)));
String s181 = gen("Hello") + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */;
String s182 = /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen("Hello");
String s183 = gen("Hello") + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen("Hello");
String s191 = gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */;
String s192 = /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42);
String s193 = gen(42) + /* 1 */sb./* 2 */toString/* 3 */(/* 4 */)/* 5 */ + gen(42);
}
}