diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java
index 9af60ae015d8..b2c45b431987 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java
@@ -1552,7 +1552,11 @@ public class HighlightMethodUtil {
HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(infoElement).description(description).escapedToolTip(toolTip).navigationShift(+1).create();
if (info != null) {
- registerFixesOnInvalidConstructorCall(constructorCall, classReference, list, aClass, constructors, results, infoElement, info);
+ JavaResolveResult[] methodCandidates = results;
+ if (constructorCall instanceof PsiNewExpression) {
+ methodCandidates = resolveHelper.getReferencedMethodCandidates((PsiCallExpression)constructorCall, true);
+ }
+ registerFixesOnInvalidConstructorCall(constructorCall, classReference, list, aClass, constructors, methodCandidates, infoElement, info);
registerMethodReturnFixAction(info, result, constructorCall);
holder.add(info);
}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java
new file mode 100644
index 000000000000..fd8855bf180f
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java
@@ -0,0 +1,9 @@
+// " Change signature of X(String)" "true"
+class X {
+ X(Integer i) {}
+ X(String s) {}
+
+ public static void main(String[] args) {
+ new X("");
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java
new file mode 100644
index 000000000000..e1a616ea35e5
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeMultipleConstructorsWithOneCandidateWithCorrectParamNumber.java
@@ -0,0 +1,9 @@
+// " Change signature of X(String)" "true"
+class X {
+ X(Integer i) {}
+ X() {}
+
+ public static void main(String[] args) {
+ new X("");
+ }
+}
\ No newline at end of file