diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java index 74fe3ce81e36..4c3a752bcac3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java @@ -23,6 +23,7 @@ import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.RedundantCastUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -86,7 +87,7 @@ public class KeySetIterationMayUseEntrySetInspection extends BaseInspection { return; } toRemove = (PsiVariable)target; - keySetExpression = toRemove.getInitializer(); + keySetExpression = PsiUtil.skipParenthesizedExprDown(toRemove.getInitializer()); } else { toRemove = null; keySetExpression = (PsiExpression)element; @@ -96,7 +97,7 @@ public class KeySetIterationMayUseEntrySetInspection extends BaseInspection { } final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)keySetExpression; final PsiReferenceExpression methodExpression = methodCallExpression.getMethodExpression(); - final PsiExpression qualifier = methodExpression.getQualifierExpression(); + final PsiExpression qualifier = PsiUtil.skipParenthesizedExprDown(methodExpression.getQualifierExpression()); if (!(qualifier instanceof PsiReferenceExpression)) { return; } @@ -268,7 +269,7 @@ public class KeySetIterationMayUseEntrySetInspection extends BaseInspection { if (VariableAccessUtils.variableIsAssignedAtPoint(variable, containingMethod, statement)) { return; } - iteratedExpression = variable.getInitializer(); + iteratedExpression = PsiUtil.skipParenthesizedExprDown(variable.getInitializer()); } else { iteratedExpression = iteratedValue; @@ -293,7 +294,7 @@ public class KeySetIterationMayUseEntrySetInspection extends BaseInspection { if (!"keySet".equals(methodName)) { return false; } - final PsiExpression expression = methodExpression.getQualifierExpression(); + final PsiExpression expression = PsiUtil.skipParenthesizedExprDown(methodExpression.getQualifierExpression()); if (!(expression instanceof PsiReferenceExpression)) { return false; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.after.java new file mode 100644 index 000000000000..a7ba2d2cbb0f --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.after.java @@ -0,0 +1,11 @@ +import java.util.Iterator; +import java.util.Map; + +abstract class B { + { + Map sortMap = null; + for (Object o1 : (sortMap.entrySet())) { + Object o = ((Map.Entry) o1).getValue(); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.java new file mode 100644 index 000000000000..8f5379bdfb34 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Parentheses.java @@ -0,0 +1,11 @@ +import java.util.Iterator; +import java.util.Map; + +abstract class B { + { + Map sortMap = null; + for (Object columnIdentifier : ((sortMap).keySet())) { + Object o = sortMap.get(columnIdentifier); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Reference.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Reference.java index d29fc33467c3..39da129b0e62 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Reference.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/key_set_with_entry_set/Reference.java @@ -4,7 +4,7 @@ import java.util.Set; class Reference { void m(Map map) { - Set keys = map.keySet(); + Set keys = (map.keySet()); for (String key : keys) { System.out.println(map.get(key)); } diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/KeySetIterationMayUseEntrySetFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/KeySetIterationMayUseEntrySetFixTest.java index f7278d9487ed..8c7c2ad4b0f9 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/KeySetIterationMayUseEntrySetFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/KeySetIterationMayUseEntrySetFixTest.java @@ -30,6 +30,7 @@ public class KeySetIterationMayUseEntrySetFixTest extends IGQuickFixesTestCase { } public void testSimple() { doTest(); } + public void testParentheses() { doTest(); } public void testCastNeeded1() { doTest(); } public void testCastNeeded2() { doTest(); } public void testReference() { doTest(); }