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