diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMemberImpl.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMemberImpl.kt index 2f2410ad617..15df9eb4e4f 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMemberImpl.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMemberImpl.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration @@ -44,7 +45,17 @@ abstract class KtLightMemberImpl( else clsDelegate.modifierList } - override fun hasModifierProperty(name: String) = (dummyDelegate ?: clsDelegate).hasModifierProperty(name) + override fun hasModifierProperty(name: String): Boolean { + if (dummyDelegate != null) { + if (name in visibilityModifiers) { + if (kotlinOrigin?.hasModifier(KtTokens.OVERRIDE_KEYWORD) ?: false) { + return clsDelegate.hasModifierProperty(name) + } + } + return dummyDelegate.hasModifierProperty(name) + } + return clsDelegate.hasModifierProperty(name) + } override fun getModifierList(): PsiModifierList? = _modifierList @@ -79,4 +90,6 @@ abstract class KtLightMemberImpl( override fun getDocComment() = (clsDelegate as PsiDocCommentOwner).docComment override fun isDeprecated() = (clsDelegate as PsiDocCommentOwner).isDeprecated -} \ No newline at end of file +} + +private val visibilityModifiers = arrayOf(PsiModifier.PRIVATE, PsiModifier.PACKAGE_LOCAL, PsiModifier.PROTECTED, PsiModifier.PUBLIC) diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.kt b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.kt index 0bc3e928ac2..d61bfa4fa7a 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.kt +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.kt @@ -10,3 +10,4 @@ class C: Tr { override val v = 1 } +// LAZINESS:NoLaziness \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.kt b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.kt index 9915f6225bd..472220f5b30 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.kt +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.kt @@ -6,4 +6,6 @@ interface Base { class C : Base { override fun foo(): Unit {} -} \ No newline at end of file +} + +// LAZINESS:NoLaziness \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.kt b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.kt index a4ecf3d1916..dd6503163c3 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.kt +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.kt @@ -6,4 +6,5 @@ interface Base { class C : Base { override fun foo(t: Unit) {} -} \ No newline at end of file +} +// LAZINESS:NoLaziness \ No newline at end of file