Skip to content

Commit 55f14ba

Browse files
committed
Fixed method parameter default value processing in uast
1 parent d90ec3e commit 55f14ba

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.jetbrains.uast.kotlin.declarations
1818

19+
import com.intellij.psi.PsiMethod
20+
import com.intellij.psi.PsiNameIdentifierOwner
1921
import org.jetbrains.kotlin.asJava.elements.KtLightElement
2022
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
2123
import org.jetbrains.kotlin.asJava.elements.KtLightMethodImpl
@@ -24,17 +26,30 @@ import org.jetbrains.kotlin.psi.KtCallableDeclaration
2426
import org.jetbrains.kotlin.psi.KtFunction
2527
import org.jetbrains.kotlin.psi.KtParameter
2628
import org.jetbrains.uast.*
27-
import org.jetbrains.uast.java.JavaUMethod
29+
import org.jetbrains.uast.java.JavaUAnnotation
30+
import org.jetbrains.uast.java.annotations
31+
import org.jetbrains.uast.java.internal.JavaUElementWithComments
32+
import org.jetbrains.uast.kotlin.KotlinUParameter
2833
import org.jetbrains.uast.kotlin.lz
2934
import org.jetbrains.uast.kotlin.unwrap
3035

3136
open class KotlinUMethod(
3237
psi: KtLightMethod,
33-
containingElement: UElement?
34-
) : JavaUMethod(psi, containingElement) {
38+
override val containingElement: UElement?
39+
) : UMethod, JavaUElementWithComments, PsiMethod by psi {
3540
override val psi: KtLightMethod = unwrap<UMethod, KtLightMethod>(psi)
3641
private val kotlinOrigin = (psi.originalElement as KtLightElement<*, *>).kotlinOrigin
3742

43+
override val annotations by lz { psi.annotations.map { JavaUAnnotation(it, this) } }
44+
45+
override val uastParameters by lz {
46+
psi.parameterList.parameters.map { KotlinUParameter(it, this) }
47+
}
48+
49+
override val uastAnchor: UElement
50+
get() = UIdentifier((psi.originalElement as? PsiNameIdentifierOwner)?.nameIdentifier ?: psi.nameIdentifier, this)
51+
52+
3853
override val uastBody by lz {
3954
val bodyExpression = (kotlinOrigin as? KtFunction)?.bodyExpression ?: return@lz null
4055
getLanguagePlugin().convertElement(bodyExpression, this) as? UExpression

plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package org.jetbrains.uast.kotlin
1818

1919
import com.intellij.psi.*
2020
import org.jetbrains.kotlin.asJava.elements.KtLightElement
21+
import org.jetbrains.kotlin.psi.KtParameter
2122
import org.jetbrains.kotlin.psi.KtVariableDeclaration
2223
import org.jetbrains.uast.*
2324
import org.jetbrains.uast.expressions.UReferenceExpression
@@ -37,7 +38,14 @@ abstract class AbstractKotlinUVariable : AbstractJavaUVariable() {
3738
val initializerExpression = when (psi) {
3839
is UastKotlinPsiVariable -> psi.ktInitializer
3940
is UastKotlinPsiParameter -> psi.ktDefaultValue
40-
is KtLightElement<*, *> -> (psi.kotlinOrigin as? KtVariableDeclaration)?.initializer
41+
is KtLightElement<*, *> -> {
42+
val origin = psi.kotlinOrigin
43+
when (origin) {
44+
is KtVariableDeclaration -> origin.initializer
45+
is KtParameter -> origin.defaultValue
46+
else -> null
47+
}
48+
}
4149
else -> null
4250
} ?: return null
4351
return getLanguagePlugin().convertElement(initializerExpression, this) as? UExpression ?: UastEmptyExpression

0 commit comments

Comments
 (0)