diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java index 2216c08a5c46..fa2ab854c651 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java @@ -266,7 +266,7 @@ public class JavaReferenceAdjuster implements ReferenceAdjuster { if (parent instanceof PsiTypeElement) { final PsiClass containingClass = refClass.getContainingClass(); if (containingClass != null && containingClass.hasTypeParameters()) { - if (parent.getParent() instanceof PsiInstanceOfExpression) { + if (parent.getParent() instanceof PsiInstanceOfExpression || parent.getParent() instanceof PsiPatternVariable) { return false; } if (!refClass.hasModifierProperty(PsiModifier.STATIC)) { diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterInnerGeneric.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterInnerGeneric.java new file mode 100644 index 000000000000..42e5f7f6e9a2 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterInnerGeneric.java @@ -0,0 +1,19 @@ +// "Replace 'that' with pattern variable" "true" +class PatternInner { + + class Basis { + String key; + + private PatternInner outer() { + return PatternInner.this; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof @SuppressWarnings("rawtypes")PatternInner.Basis that)) { + return false; + } + return this.outer() == that.outer() && this.key.equals(that.key); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeInnerGeneric.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeInnerGeneric.java new file mode 100644 index 000000000000..911e887ca441 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeInnerGeneric.java @@ -0,0 +1,21 @@ +// "Replace 'that' with pattern variable" "true" +class PatternInner { + + class Basis { + String key; + + private PatternInner outer() { + return PatternInner.this; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof PatternInner.Basis)) { + return false; + } + @SuppressWarnings("rawtypes") + PatternInner.Basis that = (PatternInner.Basis) obj; + return this.outer() == that.outer() && this.key.equals(that.key); + } + } +} \ No newline at end of file