diff --git a/idea/src/org/jetbrains/kotlin/idea/jvm/KotlinDeclarationSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/jvm/KotlinDeclarationSearcher.kt index 04bf78ef5cc..64fd8d02a16 100644 --- a/idea/src/org/jetbrains/kotlin/idea/jvm/KotlinDeclarationSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/jvm/KotlinDeclarationSearcher.kt @@ -9,9 +9,14 @@ import com.intellij.lang.jvm.JvmElement import com.intellij.lang.jvm.source.JvmDeclarationSearcher import com.intellij.psi.PsiElement import com.intellij.psi.PsiNamedElement +import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.toLightElements +import org.jetbrains.kotlin.asJava.toPsiParameters import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtParameter +import org.jetbrains.kotlin.utils.SmartList +import org.jetbrains.kotlin.utils.addIfNotNull class KotlinDeclarationSearcher : JvmDeclarationSearcher { override fun findDeclarations(declaringElement: PsiElement): Collection = @@ -25,6 +30,13 @@ class KotlinDeclarationSearcher : JvmDeclarationSearcher { else declaringElement.toLightElements() + primaryConstructor.toLightElements() } + is KtParameter -> { + SmartList().apply { + addAll(declaringElement.toPsiParameters()) + addIfNotNull(LightClassUtil.getLightClassBackingField(declaringElement)) + addAll(LightClassUtil.getLightClassPropertyMethods(declaringElement)) + } + } is KtElement -> declaringElement.toLightElements() else -> emptyList() } diff --git a/idea/tests/org/jetbrains/kotlin/idea/jvm/KotlinJvmDeclarationSearcherTest.kt b/idea/tests/org/jetbrains/kotlin/idea/jvm/KotlinJvmDeclarationSearcherTest.kt index 38c6f4236f8..0429a851dc6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/jvm/KotlinJvmDeclarationSearcherTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/jvm/KotlinJvmDeclarationSearcherTest.kt @@ -27,6 +27,8 @@ class KotlinJvmDeclarationSearcherTest : KotlinLightCodeInsightFixtureTestCase() class SomeClass(val field: String) { + private var privateField: Int = 1 + lateinit var anotherField:String constructor(i: Int): this(i.toString()){} @@ -41,8 +43,9 @@ class KotlinJvmDeclarationSearcherTest : KotlinLightCodeInsightFixtureTestCase() """, JvmDeclared("class SomeClass", JvmClass::class, JvmMethod::class), JvmDeclared("(val field: String)", JvmMethod::class), + JvmDeclared("private var privateField", com.intellij.lang.jvm.JvmField::class), JvmDeclared("lateinit var anotherField", JvmMethod::class, JvmMethod::class, com.intellij.lang.jvm.JvmField::class), - JvmDeclared("val field: String", JvmParameter::class, JvmMethod::class), + JvmDeclared("val field: String", JvmParameter::class, JvmMethod::class, com.intellij.lang.jvm.JvmField::class), JvmDeclared("constructor(i: Int)", JvmMethod::class), JvmDeclared("i: Int", JvmParameter::class), JvmDeclared("a: Long", JvmParameter::class, JvmParameter::class),