From 800704a130cd760993d578d52998fa884d33f3ec Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Tue, 27 Feb 2024 16:51:07 +0000 Subject: [PATCH] [K/JS] Allow private constructors inside external declarations ^KT-65964 Fixed --- .../checkers/declaration/FirWebCommonExternalChecker.kt | 2 +- .../kotlin/js/resolve/diagnostics/JsExternalChecker.kt | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/declaration/FirWebCommonExternalChecker.kt b/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/declaration/FirWebCommonExternalChecker.kt index 7f9ee60148c..6c5da41a68d 100644 --- a/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/declaration/FirWebCommonExternalChecker.kt +++ b/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/declaration/FirWebCommonExternalChecker.kt @@ -75,7 +75,7 @@ abstract class FirWebCommonExternalChecker(private val allowCompanionInInterface if (declaration is FirPropertyAccessor && declaration.isDirectlyExternal(context.session)) { reporter.reportOn(declaration.source, FirWebCommonErrors.WRONG_EXTERNAL_DECLARATION, "property accessor", context) } else if ( - declaration !is FirPrimaryConstructor && + declaration !is FirConstructor && declaration !is FirField && declaration.isPrivateMemberOfExternalClass(context.session) ) { diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt index af5555a5621..d0a1f4dc77b 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt @@ -67,7 +67,11 @@ class JsExternalChecker(private val allowCompanionInInterface: Boolean) : Declar if (descriptor is PropertyAccessorDescriptor && isDirectlyExternal(declaration, descriptor)) { trace.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "property accessor")) - } else if (isPrivateMemberOfExternalClass(descriptor)) { + } else if ( + descriptor !is ConstructorDescriptor && + descriptor !is FieldDescriptor && + isPrivateMemberOfExternalClass(descriptor) + ) { trace.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "private member of class")) }