From e597dda526d4982a465dad969538d570b6fec49f Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 6 Nov 2018 12:33:30 +0300 Subject: [PATCH] AndroidViewConstructorFix: do not reformat while creating constructor Before this commit, it was done by createDeclarationByPattern, preventing later reformatting in addAnnotation Related to KT-27945 --- .../KotlinAndroidViewConstructorFix.kt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/quickfix/KotlinAndroidViewConstructorFix.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/quickfix/KotlinAndroidViewConstructorFix.kt index 18fc1bd8dc1..7f5fb6be0ce 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/quickfix/KotlinAndroidViewConstructorFix.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/quickfix/KotlinAndroidViewConstructorFix.kt @@ -52,18 +52,15 @@ class KotlinAndroidViewConstructorFix(element: KtSuperTypeEntry) : KotlinQuickFi val factory = KtPsiFactory(element) - val newPrimaryConstructor = factory.createDeclarationByPattern( - "class A constructor(\n $0, $1, $2\n)", - factory.createParameter("context: android.content.Context"), - factory.createParameter("attrs: android.util.AttributeSet? = null"), - factory.createParameter("defStyleAttr: Int = 0") - ).primaryConstructor ?: return + val newPrimaryConstructor = factory.createPrimaryConstructor( + """( + context: android.content.Context, attrs: android.util.AttributeSet? = null, defStyleAttr: Int = 0 + )""".trimIndent() + ) val primaryConstructor = ktClass.createPrimaryConstructorIfAbsent().replaced(newPrimaryConstructor) primaryConstructor.valueParameterList?.let { ShortenReferences.DEFAULT.process(it) } - - primaryConstructor.addAnnotation(fqNameAnnotation, whiteSpaceText = " ") - primaryConstructor.addAfter(factory.createWhiteSpace(" "), primaryConstructor.modifierList) + primaryConstructor.addAnnotation(fqNameAnnotation) element.replace(factory.createSuperTypeCallEntry(element.text + "(context, attrs, defStyleAttr)")) } @@ -73,7 +70,7 @@ class KotlinAndroidViewConstructorFix(element: KtSuperTypeEntry) : KotlinQuickFi private val fqNameAnnotation = FqName("kotlin.jvm.JvmOverloads") private val requiredConstructorParameterTypes = - listOf("android.content.Context", "android.util.AttributeSet", "kotlin.Int") + listOf("android.content.Context", "android.util.AttributeSet", "kotlin.Int") override fun createAction(diagnostic: Diagnostic): IntentionAction? { val superTypeEntry = SUPERTYPE_NOT_INITIALIZED.cast(diagnostic).psiElement @@ -99,7 +96,7 @@ class KotlinAndroidViewConstructorFix(element: KtSuperTypeEntry) : KotlinQuickFi private fun KotlinType.constructorParameters(): List>? { val classDescriptor = constructor.declarationDescriptor as? ClassDescriptor ?: return null return classDescriptor.constructors.map { - it.valueParameters.map { it.type.getFqNameAsString() } + it.valueParameters.map { parameter -> parameter.type.getFqNameAsString() } } } }