diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt index c84b77a12e9..322b40753f3 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt @@ -23,12 +23,16 @@ import com.intellij.psi.impl.light.LightElement import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.psi.KtElement -abstract class KtLightElementBase(private val parent: PsiElement) : LightElement(parent.manager, KotlinLanguage.INSTANCE) { +abstract class KtLightElementBase(private var parent: PsiElement) : LightElement(parent.manager, KotlinLanguage.INSTANCE) { override fun toString() = "${this.javaClass.simpleName} of $parent" override fun getParent(): PsiElement = parent abstract val kotlinOrigin: KtElement? + internal fun setParent(newParent: PsiElement) { + parent = newParent + } + override fun getText() = kotlinOrigin?.text ?: "" override fun getTextRange() = kotlinOrigin?.textRange ?: TextRange.EMPTY_RANGE override fun getTextOffset() = kotlinOrigin?.textOffset ?: 0 diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt index 9eb48cc6819..feccd15e7ac 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightModifierList.kt @@ -61,6 +61,10 @@ abstract class KtLightModifierList { val annotationsForEntries = owner.givenAnnotations ?: lightAnnotationsForEntries(this) + //TODO: Hacky way to update wrong parents for annotations + annotationsForEntries.forEach { + it.parent = this + } val modifierListOwner = parent if (modifierListOwner is KtLightClassForSourceDeclaration && modifierListOwner.isAnnotationType) { diff --git a/compiler/testData/asJava/ultraLightClasses/annotations.kt b/compiler/testData/asJava/ultraLightClasses/annotations.kt index ea61612a6f0..8bc9bd0a040 100644 --- a/compiler/testData/asJava/ultraLightClasses/annotations.kt +++ b/compiler/testData/asJava/ultraLightClasses/annotations.kt @@ -61,3 +61,5 @@ class Foo @Anno constructor(dependency: MyDependency) { class Example(@field:Ann val foo: String, // annotate Java field @get:Ann val bar: String, // annotate Java getter @param:Ann val quux: String) // annotate Java constructor parameter + +class CtorAnnotations(@Anno val x: String, @param:Anno val y: String, val z: String) \ No newline at end of file