diff --git a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java
index a00bdd572e6d..51a7d12bac1e 100644
--- a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java
+++ b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java
@@ -519,11 +519,17 @@ public class DuplicatesFinder {
return (resolveResult2 instanceof PsiLocalVariable || resolveResult2 instanceof PsiParameter) &&
match.putDeclarationCorrespondence(resolveResult1, resolveResult2);
}
- final PsiElement qualifier2 = candidate.getQualifier();
+ PsiElement qualifier2 = candidate.getQualifier();
+ while (qualifier2 instanceof PsiParenthesizedExpression) {
+ qualifier2 = ((PsiParenthesizedExpression)qualifier2).getExpression();
+ }
if (!equivalentResolve(resolveResult1, resolveResult2, qualifier2)) {
return matchExtractableVariable(pattern, candidate, match);
}
PsiElement qualifier1 = pattern.getQualifier();
+ while (qualifier1 instanceof PsiParenthesizedExpression) {
+ qualifier1 = ((PsiParenthesizedExpression)qualifier1).getExpression();
+ }
if (qualifier1 instanceof PsiReferenceExpression && qualifier2 instanceof PsiReferenceExpression &&
!match.areCorrespond(((PsiReferenceExpression)qualifier1).resolve(), ((PsiReferenceExpression)qualifier2).resolve())) {
return false;
diff --git a/java/java-tests/testData/inspection/duplicateBranchesInSwitch/UnresolvedQualifier.java b/java/java-tests/testData/inspection/duplicateBranchesInSwitch/UnresolvedQualifier.java
new file mode 100644
index 000000000000..14f325066b95
--- /dev/null
+++ b/java/java-tests/testData/inspection/duplicateBranchesInSwitch/UnresolvedQualifier.java
@@ -0,0 +1,12 @@
+class C {
+ public static void main(String[] args) {
+ switch (args.length) {
+ case 1:
+ foo.bar;
+ break;
+ case 2:
+ (baz).bar;
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInSwitchTest.kt b/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInSwitchTest.kt
index 76604f66df55..d6b1c786210e 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInSwitchTest.kt
+++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInSwitchTest.kt
@@ -41,6 +41,7 @@ class DuplicateBranchesInSwitchTest : LightCodeInsightFixtureTestCase() {
fun testParentheses() = doTest()
fun testAssignment() = doTest()
fun testNoExceptionWhenFirstLabelIsMissing() = doTest()
+ fun testUnresolvedQualifier() = doTest()
private fun doTest() {
myFixture.testHighlighting("${getTestName(false)}.java")