Fix suggested names in Spring (do not take same parameter into account)

This commit is contained in:
Mikhail Glukhikh
2017-11-30 16:38:32 +03:00
parent b09465ca0b
commit 20b48ab90c
2 changed files with 6 additions and 3 deletions
@@ -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()
}
@@ -180,13 +180,14 @@ private fun createSettable(
internal fun getSuggestedNames(
beanPointer: SpringBeanPointer<CommonSpringBean>,
declaration: KtCallableDeclaration,
excludedInValidator: List<KtDeclaration> = listOf(declaration),
existingNames: Collection<String> = emptyList(),
getType: CallableDescriptor.() -> KotlinType?
): Collection<String> {
val names = LinkedHashSet<String>()
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
}
}
}