IDEA-164271 "Simplifiable conditional usage of Map.get()" doesn't recognize proper pattern with adding additional parentheses

This commit is contained in:
Tagir Valeev
2016-11-23 12:30:56 +07:00
parent e60be117ba
commit 0053cc6c7e
3 changed files with 32 additions and 4 deletions
@@ -0,0 +1,11 @@
// "Replace with 'computeIfAbsent' method call" "true"
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Main {
public void testMap(Map<String, List<String>> map, String key, String value) {
List<String> list = map.computeIfAbsent(key, k -> new ArrayList<>());
list.add(value);
}
}
@@ -0,0 +1,14 @@
// "Replace with 'computeIfAbsent' method call" "true"
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Main {
public void testMap(Map<String, List<String>> map, String key, String value) {
List<String> list = map.get(key);
if(list == nul<caret>l) {
map.put(key, (list = new ArrayList<>()));
}
list.add(value);
}
}
@@ -727,10 +727,13 @@ public class ExpressionUtils {
if(element instanceof PsiExpressionStatement) {
element = ((PsiExpressionStatement)element).getExpression();
}
if (element instanceof PsiAssignmentExpression) {
PsiAssignmentExpression assignment = (PsiAssignmentExpression)element;
if(assignment.getOperationTokenType().equals(JavaTokenType.EQ)) {
return assignment;
if (element instanceof PsiExpression) {
element = PsiUtil.skipParenthesizedExprDown((PsiExpression)element);
if (element instanceof PsiAssignmentExpression) {
PsiAssignmentExpression assignment = (PsiAssignmentExpression)element;
if(assignment.getOperationTokenType().equals(JavaTokenType.EQ)) {
return assignment;
}
}
}
return null;