From 114c3be6323f89d7b728471224a8207b320a78fa Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Tue, 29 Jan 2019 12:35:34 +0300 Subject: [PATCH] 191: Uast: `KtParameter` can be converted to field --- .../uast/kotlin/KotlinUastLanguagePlugin.kt.191 | 10 +++++++--- .../tests/MultiplesRequiredTypesTest.kt.191 | 8 ++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt.191 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt.191 index 39d4bed2a8d..ceebd9f608c 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt.191 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt.191 @@ -223,10 +223,14 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin { } is KtParameter -> el { - val ownerFunction = original.ownerFunction as? KtFunction ?: return null - val lightMethod = LightClassUtil.getLightClassMethod(ownerFunction) ?: return null - val lightParameter = lightMethod.parameterList.parameters.find { it.name == original.name } ?: return null + val ownerFunction = original.ownerFunction as? KtFunction ?: return@el null + val lightMethod = LightClassUtil.getLightClassMethod(ownerFunction) ?: return@el null + val lightParameter = lightMethod.parameterList.parameters.find { it.name == original.name } ?: return@el null KotlinUParameter(lightParameter, original, givenParent) + } ?: el { + if (!original.hasValOrVar()) return@el null + val lightField = LightClassUtil.getLightClassBackingField(original) ?: return@el null + KotlinUField(lightField, original, givenParent) } is KtFile -> el { KotlinUFile(original, this@KotlinUastLanguagePlugin) } diff --git a/plugins/uast-kotlin/tests/MultiplesRequiredTypesTest.kt.191 b/plugins/uast-kotlin/tests/MultiplesRequiredTypesTest.kt.191 index df241db01d4..2fd828bd66b 100644 --- a/plugins/uast-kotlin/tests/MultiplesRequiredTypesTest.kt.191 +++ b/plugins/uast-kotlin/tests/MultiplesRequiredTypesTest.kt.191 @@ -7,6 +7,7 @@ package org.jetbrains.uast.test.kotlin import com.intellij.psi.PsiElement import com.intellij.psi.PsiElementVisitor +import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.uast.* import org.jetbrains.uast.test.env.kotlin.assertEqualsToFile @@ -23,13 +24,16 @@ class MultiplesRequiredTypesTest : AbstractKotlinUastTest() { } private fun UFile.asMultiplesTargetConversionResult(): String { - + val plugin = UastLanguagePlugin.byLanguage(KotlinLanguage.INSTANCE)!! val builder = StringBuilder() var level = 0 (this.psi as KtFile).accept(object : PsiElementVisitor() { override fun visitElement(element: PsiElement) { val uElement = - element.toUElementOfExpectedTypes(UFile::class.java, UClass::class.java, UField::class.java, UMethod::class.java) + plugin.convertElementWithParent( + element, + arrayOf(UFile::class.java, UClass::class.java, UField::class.java, UMethod::class.java) + ) if (uElement != null) { builder.append(" ".repeat(level)) builder.append(uElement.asLogString())