From d5e4227a1dea38019c2d38d1253d1212e0e3df25 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Wed, 2 Oct 2019 17:00:53 +0300 Subject: [PATCH] Revert commit and additional workaround to diagnostics problem Another workaround of testClassObjectCopiedFieldObject test fix Revert "Fix testClassObjectCopiedFieldObject test" This reverts commit 8def1f07aa4f98aebf89a0753e8c1f86df885633. --- .../kotlin/asJava/builder/LightClassDataProvider.kt | 7 ++++--- .../jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt | 4 +++- 2 files changed, 7 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 6d5d91a66cb..e11c044f12d 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) || processingClassOrObject.isAncestor(classOrObject, true)) { + if (classOrObject.isAncestor(processingClassOrObject, true)) { return true } @@ -196,8 +196,9 @@ private class ClassFilterForClassOrObject(private val classOrObject: KtClassOrOb return false } - override fun shouldGenerateClass(processingClassOrObject: KtClassOrObject) = - shouldGenerateClassMembers(processingClassOrObject) + override fun shouldGenerateClass(processingClassOrObject: KtClassOrObject) + // generate outer classes but not their members + = shouldGenerateClassMembers(processingClassOrObject) || processingClassOrObject.isAncestor(classOrObject, true) override fun shouldGenerateScript(script: KtScript) = PsiTreeUtil.isAncestor(script, classOrObject, false) override fun shouldGenerateCodeFragment(script: KtCodeFragment) = false diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt index 8680b7253fd..f8278f4938e 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.asJava.builder.InvalidLightClassDataHolder import org.jetbrains.kotlin.asJava.builder.LightClassDataProviderForFileFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration +import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.DiagnosticFactory.cast @@ -49,7 +50,8 @@ fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostic } fun getDiagnosticsForClass(ktClassOrObject: KtClassOrObject): Diagnostics { - val lightClassDataHolder = KtLightClassForSourceDeclaration.getLightClassDataHolder(ktClassOrObject) + val outermostClass = getOutermostClassOrObject(ktClassOrObject) + val lightClassDataHolder = KtLightClassForSourceDeclaration.getLightClassDataHolder(outermostClass) if (lightClassDataHolder is InvalidLightClassDataHolder) { return Diagnostics.EMPTY }