diff --git a/java/java-tests/testData/inspection/overwrittenKey/OverwrittenKey.java b/java/java-tests/testData/inspection/overwrittenKey/OverwrittenKey.java index 9e51a53e35fc..62a9ee7fb71b 100644 --- a/java/java-tests/testData/inspection/overwrittenKey/OverwrittenKey.java +++ b/java/java-tests/testData/inspection/overwrittenKey/OverwrittenKey.java @@ -49,4 +49,15 @@ class OverwrittenKey { Map map2 = Map.ofEntries(Map.entry("a", "a"), Map.entry("b", "b"), Map.entry("c", "b"), Map.entry("b", "d")); } + + void localClass() { + class X extends HashMap { + class Y { + void test() { + put("a", "b"); + put("a", "c"); + } + } + } + } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index 20b4788ef3b4..ad443d399cad 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -15,6 +15,7 @@ import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.*; import com.intellij.util.ArrayUtil; +import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import com.siyeh.HardcodedMethodConstants; import com.siyeh.ig.callMatcher.CallMatcher; @@ -941,7 +942,15 @@ public class ExpressionUtils { containingClass = ClassUtils.getContainingClass(containingClass); } if (containingClass != null) { - return factory.createExpressionFromText(containingClass.getQualifiedName() + "." + PsiKeyword.THIS, ref); + String thisQualifier = containingClass.getQualifiedName(); + if (thisQualifier == null) { + if (PsiUtil.isLocalClass(containingClass)) { + thisQualifier = containingClass.getName(); + } else { + throw new IncorrectOperationException("Anonymous surrounding class"); + } + } + return factory.createExpressionFromText(thisQualifier + "." + PsiKeyword.THIS, ref); } } }