diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/EquivalenceChecker.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/EquivalenceChecker.java
index 6b08da31bf65..13a9c4ff0574 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/EquivalenceChecker.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/EquivalenceChecker.java
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.psiutils;
+import com.intellij.openapi.util.Comparing;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
@@ -775,6 +776,11 @@ public class EquivalenceChecker {
if (!expressionsAreEquivalentDecision(arrayInitializer1, arrayInitializer2).getExactlyMatches()) {
return EXACTLY_UN_MATCHES;
}
+ final PsiMethod constructor1 = newExpression1.resolveConstructor();
+ final PsiMethod constructor2 = newExpression2.resolveConstructor();
+ if (!Comparing.equal(constructor1, constructor2)) {
+ return EXACTLY_UN_MATCHES;
+ }
final PsiExpression qualifier1 = newExpression1.getQualifier();
final PsiExpression qualifier2 = newExpression2.getQualifier();
if (!expressionsAreEquivalentDecision(qualifier1, qualifier2).getExactlyMatches()) {
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
index 6e10b9151fca..24fccf260af9 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
@@ -47,4 +47,19 @@ class ConditionalExpressionWithIdenticalBranches {
int someMethod(String s, String s2) {
return s.length();
}
+
+ class Item {
+ Item(String name) {
+ }
+
+ Item(int value) {
+ }
+
+ void v() {
+ int i = 1;
+ Item item = (i == 1 ? new Item("1") : new Item(i)); // warning here
+
+ Item item1 = (i == 1 ? new Item("1") : new Item("2")); // warning here
+ }
+ }
}
\ No newline at end of file
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/expected.xml
index 03494e3dd12d..6b270c082c80 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/expected.xml
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/expected.xml
@@ -55,4 +55,11 @@
Conditional expression with identical or similar branches
Conditional expression <code>new Random().nextBoolean() ? "2" + "q" + "1" : "2" + "qwe" + "1"</code> with identical or similar branches #loc
+
+
+ ConditionalExpressionWithIdenticalBranches.java
+ 62
+ Conditional expression with identical or similar branches
+ Conditional expression <code>i == 1 ? new Item("1") : new Item("2")</code> with identical or similar branches #loc
+
\ No newline at end of file