diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt index fe461141d46..bf7cca30a43 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt @@ -16,6 +16,7 @@ package org.jetbrains.uast.kotlin.declarations +import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiMethod import com.intellij.psi.PsiNameIdentifierOwner @@ -26,6 +27,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.isGetter import org.jetbrains.kotlin.asJava.elements.isSetter +import org.jetbrains.kotlin.asJava.findFacadeClass +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getParentOfType @@ -151,11 +154,18 @@ open class KotlinUAnnotationMethod( } -private fun buildLightMethodFake(original: KtFunction): PsiMethod = LightMethodBuilder( +private fun buildLightMethodFake(original: KtFunction): PsiMethod = object : LightMethodBuilder( original.manager, original.language, original.name, LightParameterListBuilder(original.manager, original.language), LightModifierList(original.manager) -) +) { + + init { + containingClass = original.containingClassOrObject?.toLightClass() ?: original.containingKtFile.findFacadeClass() + } + + override fun getParent(): PsiElement? = containingClass +} class KotlinUMethodWithFakeLightDelegate(val original: KtFunction, givenParent: UElement?) : KotlinUMethod(buildLightMethodFake(original), original, givenParent) { diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.183 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.183 index b4e702c0f34..74c99c5271c 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.183 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.183 @@ -16,6 +16,7 @@ package org.jetbrains.uast.kotlin.declarations +import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiMethod import com.intellij.psi.PsiNameIdentifierOwner @@ -27,6 +28,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.isGetter import org.jetbrains.kotlin.asJava.elements.isSetter import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.asJava.findFacadeClass +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getParentOfType @@ -149,11 +152,18 @@ open class KotlinUAnnotationMethod( } -private fun buildLightMethodFake(original: KtFunction): PsiMethod = LightMethodBuilder( +private fun buildLightMethodFake(original: KtFunction): PsiMethod = object : LightMethodBuilder( original.manager, original.language, original.name, LightParameterListBuilder(original.manager, original.language), LightModifierList(original.manager) -) +) { + + init { + containingClass = original.containingClassOrObject?.toLightClass() ?: original.containingKtFile.findFacadeClass() + } + + override fun getParent(): PsiElement? = containingClass +} class KotlinUMethodWithFakeLightDelegate(val original: KtFunction, givenParent: UElement?) : KotlinUMethod(buildLightMethodFake(original), original, givenParent) { diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 index 15a533f5130..4eba77f3f94 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 @@ -25,6 +25,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.isGetter import org.jetbrains.kotlin.asJava.elements.isSetter import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.asJava.findFacadeClass +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getParentOfType @@ -61,8 +63,8 @@ open class KotlinUMethod( override val annotations: List by lz { psi.annotations - .mapNotNull { (it as? KtLightElement<*, *>)?.kotlinOrigin as? KtAnnotationEntry } - .map { KotlinUAnnotation(it, this) } + .mapNotNull { (it as? KtLightElement<*, *>)?.kotlinOrigin as? KtAnnotationEntry } + .map { KotlinUAnnotation(it, this) } } private val receiver by lz { (sourcePsi as? KtCallableDeclaration)?.receiverTypeReference } @@ -152,11 +154,18 @@ open class KotlinUAnnotationMethod( } -private fun buildLightMethodFake(original: KtFunction): PsiMethod = LightMethodBuilder( +private fun buildLightMethodFake(original: KtFunction): PsiMethod = object : LightMethodBuilder( original.manager, original.language, original.name, LightParameterListBuilder(original.manager, original.language), LightModifierList(original.manager) -) +) { + + init { + containingClass = original.containingClassOrObject?.toLightClass() ?: original.containingKtFile.findFacadeClass() + } + + override fun getParent(): PsiElement? = containingClass +} class KotlinUMethodWithFakeLightDelegate(val original: KtFunction, givenParent: UElement?) : KotlinUMethod(buildLightMethodFake(original), original, givenParent) {