From 8def1f07aa4f98aebf89a0753e8c1f86df885633 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Mon, 30 Sep 2019 20:36:56 +0300 Subject: [PATCH] Fix testClassObjectCopiedFieldObject test Fix of the test PsiCheckerTestGenerated$DuplicateJvmSignature$Fields.testClassObjectCopiedFieldObject additionally fixed the bug with blinking this test example in IDEA with UL classes enabled. The story: Extra diagnostics could be requested for any KtClassOrObject but for _nested_ classes result may depend on outer class members signature collecting. So the the order of outer/nested diagnostic reporting takes matter. So for nested classes/objects we have to gen members of outer classes. --- .../kotlin/asJava/builder/LightClassDataProvider.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt index e11c044f12d..6d5d91a66cb 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt @@ -170,7 +170,7 @@ private class ClassFilterForClassOrObject(private val classOrObject: KtClassOrOb if (classOrObject === processingClassOrObject) return true // process all children - if (classOrObject.isAncestor(processingClassOrObject, true)) { + if (classOrObject.isAncestor(processingClassOrObject, true) || processingClassOrObject.isAncestor(classOrObject, true)) { return true } @@ -196,9 +196,8 @@ private class ClassFilterForClassOrObject(private val classOrObject: KtClassOrOb return false } - override fun shouldGenerateClass(processingClassOrObject: KtClassOrObject) - // generate outer classes but not their members - = shouldGenerateClassMembers(processingClassOrObject) || processingClassOrObject.isAncestor(classOrObject, true) + override fun shouldGenerateClass(processingClassOrObject: KtClassOrObject) = + shouldGenerateClassMembers(processingClassOrObject) override fun shouldGenerateScript(script: KtScript) = PsiTreeUtil.isAncestor(script, classOrObject, false) override fun shouldGenerateCodeFragment(script: KtCodeFragment) = false