From 20b48ab90c78df0f3230e52e52720edf4aed4a55 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 30 Nov 2017 16:38:32 +0300 Subject: [PATCH] Fix suggested names in Spring (do not take same parameter into account) --- .../spring/generate/generateAutowiredDependenciesUtils.kt | 2 +- .../idea/spring/generate/generateDependenciesUtils.kt | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt index 77137ecca34..8c361e6644b 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt @@ -92,7 +92,7 @@ private fun addCreatePropertyTemplate( builder.appendVariableTemplate(currentProperty, candidateBeanClasses) { val existingNames = currentProperty.containingClassOrObject!!.declarations .mapNotNull { if (it != currentProperty) (it as? KtProperty)?.name else null } - getSuggestedNames(candidateBean, currentProperty, existingNames) { returnType } + getSuggestedNames(candidateBean, currentProperty, existingNames = existingNames) { returnType } } builder.buildInlineTemplate() } diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt index a8c8f049aee..478d8e4b03a 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt @@ -180,13 +180,14 @@ private fun createSettable( internal fun getSuggestedNames( beanPointer: SpringBeanPointer, declaration: KtCallableDeclaration, + excludedInValidator: List = listOf(declaration), existingNames: Collection = emptyList(), getType: CallableDescriptor.() -> KotlinType? ): Collection { val names = LinkedHashSet() val newDeclarationNameValidator = - NewDeclarationNameValidator(declaration.parent, null, NewDeclarationNameValidator.Target.VARIABLES, listOf(declaration)) + NewDeclarationNameValidator(declaration.parent, null, NewDeclarationNameValidator.Target.VARIABLES, excludedInValidator) fun validate(name: String) = name !in existingNames && newDeclarationNameValidator(name) SpringBeanUtils.getInstance() @@ -252,7 +253,9 @@ private fun BatchTemplateRunner.addCreateFunctionTemplate( addTemplateFactory(parameterList) { for ((paramIndex, candidateBeanClassesForParam) in candidateBeanClasses) { builder.appendVariableTemplate(function.valueParameters[paramIndex], candidateBeanClassesForParam) { - getSuggestedNames(dependency, function) { valueParameters[paramIndex].type } + getSuggestedNames(dependency, function, listOf(function.valueParameters[paramIndex], function)) { + valueParameters[paramIndex].type + } } }