From 484167e9d9b5e1c1590479c728f458c427210d62 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 30 Mar 2016 15:33:02 +0300 Subject: [PATCH] KtLightModifierList* is created only for light classes build for sources This is a hacky solution to avoid calling lightMemberOrigin.originalElement inside Moreover it needs to resolve descriptor for sources inside computeAnnotations and it is used only for kotlin sources so this will have to do for now --- .../org/jetbrains/kotlin/asJava/KtLightField.kt | 6 +++++- .../jetbrains/kotlin/asJava/KtLightMethod.kt | 6 +++++- .../kotlin/asJava/KtLightParameter.java | 17 +++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt index f6be5ef78ee..0cc51f5e692 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightField.kt @@ -68,7 +68,11 @@ sealed class KtLightFieldImpl( @Throws(IncorrectOperationException::class) override fun setName(@NonNls name: String) = throw IncorrectOperationException("Not supported") - private val _modifierList by lazy { clsDelegate.modifierList?.let { KtLightModifierList(it, this) } } + private val _modifierList by lazy { + if (lightMemberOrigin is LightMemberOriginForDeclaration) + clsDelegate.modifierList?.let { KtLightModifierList(it, this) } + else clsDelegate.modifierList + } override fun getModifierList() = _modifierList diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightMethod.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightMethod.kt index a038874997b..eb18963d2f9 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightMethod.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightMethod.kt @@ -111,7 +111,11 @@ sealed class KtLightMethodImpl( throw IncorrectOperationException(JavaCoreBundle.message("psi.error.attempt.to.edit.class.file")) } - private val _modifierList by lazy { KtLightModifierList(clsDelegate.modifierList, this) } + private val _modifierList by lazy { + if (lightMethodOrigin is LightMemberOriginForDeclaration) + KtLightModifierList(clsDelegate.modifierList, this) + else clsDelegate.modifierList + } override fun getModifierList() = _modifierList diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightParameter.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightParameter.java index cd12080d840..9f82b1f532d 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightParameter.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightParameter.java @@ -50,12 +50,17 @@ public class KtLightParameter extends LightParameter implements KtLightDeclarati this.index = index; this.method = method; - this.modifierList = new KtLightModifierListWithExplicitModifiers(this, ArrayUtil.EMPTY_STRING_ARRAY) { - @Override - public PsiAnnotationOwner getDelegate() { - return delegate.getModifierList(); - } - }; + if (method.getLightMethodOrigin() instanceof LightMemberOriginForDeclaration) { + this.modifierList = new KtLightModifierListWithExplicitModifiers(this, ArrayUtil.EMPTY_STRING_ARRAY) { + @Override + public PsiAnnotationOwner getDelegate() { + return delegate.getModifierList(); + } + }; + } + else { + this.modifierList = super.getModifierList(); + } } @NotNull