191: Uast: KtParameter can be converted to field
This commit is contained in:
@@ -223,10 +223,14 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin {
|
||||
}
|
||||
|
||||
is KtParameter -> el<UParameter> {
|
||||
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<UField> {
|
||||
if (!original.hasValOrVar()) return@el null
|
||||
val lightField = LightClassUtil.getLightClassBackingField(original) ?: return@el null
|
||||
KotlinUField(lightField, original, givenParent)
|
||||
}
|
||||
|
||||
is KtFile -> el<UFile> { KotlinUFile(original, this@KotlinUastLanguagePlugin) }
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user