From 4ac9d4360e2c02c7752c5b405bdbc00a4969293c Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 7 Dec 2016 18:22:26 +0300 Subject: [PATCH] create constructor parameter should consider context (e.g.: type parameter name == some class name from java.lang) --- .../JavaChangeSignatureUsageProcessor.java | 4 ++-- ...afterTypeParameterWithNameSameAsClassFromJavaLang.java | 8 ++++++++ ...eforeTypeParameterWithNameSameAsClassFromJavaLang.java | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterTypeParameterWithNameSameAsClassFromJavaLang.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeTypeParameterWithNameSameAsClassFromJavaLang.java diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 8a7d6304ffbb..53591010d56d 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -950,7 +950,7 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr for (PsiSubstitutor psiSubstitutor : substitutor) { type = psiSubstitutor.substitute(type); } - return factory.createParameter(newParm.getName(), type); + return factory.createParameter(newParm.getName(), type, list); } private static void resolveParameterVsFieldsConflicts(final PsiParameter[] newParms, @@ -1149,7 +1149,7 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr parameterType = JavaPsiFacade.getElementFactory(method.getProject()).createTypeFromText(CommonClassNames.JAVA_LANG_OBJECT, method); } - PsiParameter param = factory.createParameter(info.getName(), parameterType); + PsiParameter param = factory.createParameter(info.getName(), parameterType, method); prototype.getParameterList().add(param); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterTypeParameterWithNameSameAsClassFromJavaLang.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterTypeParameterWithNameSameAsClassFromJavaLang.java new file mode 100644 index 000000000000..1e292da2bbe2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterTypeParameterWithNameSameAsClassFromJavaLang.java @@ -0,0 +1,8 @@ +// "Add constructor parameter" "true" +class Test { + final Math math; + + Test(Math math) { + this.math = math; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeTypeParameterWithNameSameAsClassFromJavaLang.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeTypeParameterWithNameSameAsClassFromJavaLang.java new file mode 100644 index 000000000000..3834904db222 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeTypeParameterWithNameSameAsClassFromJavaLang.java @@ -0,0 +1,4 @@ +// "Add constructor parameter" "true" +class Test { + final Math math; +}