diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index a01ea6be93c..852bb3106ae 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -384,11 +384,19 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) { superTypeCallEntry?.extractArgumentsTo(this) } } + + fun defaultVisibility() = + if (owner is KtObjectDeclaration || owner.hasModifier(SEALED_KEYWORD) || owner.hasModifier(ENUM_KEYWORD)) + // TODO: sealed is FILE_PRIVATE (?) object / enum is HIDDEN (?) + Visibilities.PRIVATE + else + Visibilities.UNKNOWN + val firConstructor = FirPrimaryConstructorImpl( session, this ?: owner, FirFunctionSymbol(callableIdForClassConstructor()), - this?.visibility ?: Visibilities.UNKNOWN, + this?.visibility ?: defaultVisibility(), this?.hasExpectModifier() ?: false, this?.hasActualModifier() ?: false, delegatedSelfTypeRef, diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt index eb8df5b168f..4e74cfbef4e 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt @@ -1,6 +1,6 @@ FILE: enums.kt public? final? enum class Order : kotlin/Enum { - public? constructor(): super() + private constructor(): super() public? final enum entry FIRST : kotlin/Any { public? constructor(): super() @@ -60,7 +60,7 @@ FILE: enums.kt public? abstract fun sayHello(): kotlin/Unit public? final? companion object Companion : kotlin/Any { - public? constructor(): super() + private constructor(): super() public? final? const val G: = Double(6.67E-11) public? get(): diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt index cfb0af99105..7234efaf48a 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt @@ -2,11 +2,11 @@ FILE: enums2.kt public? final? interface Some : kotlin/Any { } public? final? object O1 : Some { - public? constructor(): super() + private constructor(): super() } public? final? object O2 : Some { - public? constructor(): super() + private constructor(): super() } public? final? enum class SomeEnum : kotlin/Enum { diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/nestedClass.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/nestedClass.txt index 7802a8ad7b8..20373284004 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/declarations/nestedClass.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/nestedClass.txt @@ -15,7 +15,7 @@ FILE: nestedClass.kt } public? final? object Obj : Base { - public? constructor(): super(String()) + private constructor(): super(String()) } diff --git a/compiler/fir/psi2fir/testData/rawBuilder/expressions/locals.txt b/compiler/fir/psi2fir/testData/rawBuilder/expressions/locals.txt index bcd2906d6ee..0ab4aae69cf 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/expressions/locals.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/expressions/locals.txt @@ -18,7 +18,7 @@ FILE: locals.kt } lval code: = object : Any { - public? constructor(): super() + private constructor(): super() public? final? fun foo(): { ^foo hashCode#() diff --git a/compiler/fir/resolve/testData/resolve/companion.txt b/compiler/fir/resolve/testData/resolve/companion.txt index ad95d0f8e86..a3cab174d5f 100644 --- a/compiler/fir/resolve/testData/resolve/companion.txt +++ b/compiler/fir/resolve/testData/resolve/companion.txt @@ -3,7 +3,7 @@ FILE: companion.kt public constructor(): super() public final companion object Companion : R|kotlin/Any| { - public constructor(): super() + private constructor(): super() public final class InCompanion : R|kotlin/Any| { public constructor(): super() @@ -20,7 +20,7 @@ FILE: companion.kt public constructor(): super() public final companion object NamedCompanion : R|kotlin/Any| { - public constructor(): super() + private constructor(): super() public final class InCompanion : R|kotlin/Any| { public constructor(): super() diff --git a/compiler/fir/resolve/testData/resolve/enum.txt b/compiler/fir/resolve/testData/resolve/enum.txt index b0f10aed59e..0569cff0ca2 100644 --- a/compiler/fir/resolve/testData/resolve/enum.txt +++ b/compiler/fir/resolve/testData/resolve/enum.txt @@ -2,11 +2,11 @@ FILE: enum.kt public abstract interface Some : R|kotlin/Any| { } public final object O1 : R|Some| { - public constructor(): super() + private constructor(): super() } public final object O2 : R|Some| { - public constructor(): super() + private constructor(): super() } public final enum class SomeEnum : R|kotlin/Enum| { diff --git a/compiler/fir/resolve/testData/resolve/expresssions/localImplicitBodies.txt b/compiler/fir/resolve/testData/resolve/expresssions/localImplicitBodies.txt index b36f39aae2b..b9b95d9c34c 100644 --- a/compiler/fir/resolve/testData/resolve/expresssions/localImplicitBodies.txt +++ b/compiler/fir/resolve/testData/resolve/expresssions/localImplicitBodies.txt @@ -1,7 +1,7 @@ FILE: localImplicitBodies.kt public final fun foo(): R|kotlin/Unit| { lval x: = object : R|kotlin/Any| { - public constructor(): super() + private constructor(): super() public final fun sss(): { ^sss #() diff --git a/compiler/fir/resolve/testData/resolve/fromBuilder/enums.txt b/compiler/fir/resolve/testData/resolve/fromBuilder/enums.txt index a84bbf590a2..7f9b5c74fcc 100644 --- a/compiler/fir/resolve/testData/resolve/fromBuilder/enums.txt +++ b/compiler/fir/resolve/testData/resolve/fromBuilder/enums.txt @@ -60,7 +60,7 @@ FILE: enums.kt public abstract fun sayHello(): R|kotlin/Unit| public final companion object Companion : R|kotlin/Any| { - public constructor(): super() + private constructor(): super() public final const val G: R|kotlin/Double| = Double(6.67E-11) public get(): R|kotlin/Double| diff --git a/compiler/fir/resolve/testData/resolve/nestedClass.txt b/compiler/fir/resolve/testData/resolve/nestedClass.txt index c2716f33ddf..1827e8a2ee8 100644 --- a/compiler/fir/resolve/testData/resolve/nestedClass.txt +++ b/compiler/fir/resolve/testData/resolve/nestedClass.txt @@ -15,7 +15,7 @@ FILE: nestedClass.kt } public final object Obj : R|Base| { - public constructor(): super(String()) + private constructor(): super(String()) }