From dd4a5944f1b254d93f7e5163601f800267f53304 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 12 Apr 2017 18:58:27 +0200 Subject: [PATCH] Delegate getContaingFile() for UAST declarations to Kotlin origin This is required to be able to report inspection problems on such elements. --- .../org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt | 7 +++---- .../jetbrains/uast/kotlin/declarations/KotlinUMethod.kt | 7 +++---- .../jetbrains/uast/kotlin/declarations/KotlinUVariable.kt | 2 ++ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt index 4ff85dfacfe..866d1f966f9 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt @@ -16,10 +16,7 @@ package org.jetbrains.uast.kotlin -import com.intellij.psi.PsiAnonymousClass -import com.intellij.psi.PsiClass -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiMethod +import com.intellij.psi.* import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.toLightMethods @@ -43,6 +40,8 @@ class KotlinUClass private constructor( return super.getOriginalElement() } + override fun getContainingFile(): PsiFile? = ktClass?.containingFile ?: psi.containingFile + override val annotations: List get() = ktClass?.annotationEntries?.map { KotlinUAnnotation(it, this) } ?: emptyList() 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 5ff6c2a8463..f7da97f9889 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,10 +16,7 @@ package org.jetbrains.uast.kotlin.declarations -import com.intellij.psi.PsiCodeBlock -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiMethod -import com.intellij.psi.PsiNameIdentifierOwner +import com.intellij.psi.* import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.isGetter @@ -44,6 +41,8 @@ open class KotlinUMethod( private val kotlinOrigin = (psi.originalElement as KtLightElement<*, *>).kotlinOrigin + override fun getContainingFile(): PsiFile? = kotlinOrigin?.containingFile ?: psi.containingFile + override val annotations by lz { (kotlinOrigin as? KtDeclaration)?.annotationEntries?.map { KotlinUAnnotation(it, this) } ?: emptyList() } diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt index 8d15a04b0d0..ce28b88cc92 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt @@ -58,6 +58,8 @@ class KotlinUVariable( override val annotations by lz { psi.annotations.map { JavaUAnnotation(it, this) } } override val typeReference by lz { getLanguagePlugin().convertOpt(psi.typeElement, this) } + override fun getContainingFile(): PsiFile? = (psi as? KtLightElement<*, *>)?.kotlinOrigin?.containingFile ?: psi.containingFile + override fun getInitializer(): PsiExpression? { return super.getInitializer() }