Raw FIR: make object/sealed/enum constructor visibility private

This commit is contained in:
Mikhail Glukhikh
2019-04-02 15:17:14 +03:00
parent 057156f323
commit f77ba2dd3e
10 changed files with 22 additions and 14 deletions
@@ -384,11 +384,19 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
superTypeCallEntry?.extractArgumentsTo(this) 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( val firConstructor = FirPrimaryConstructorImpl(
session, session,
this ?: owner, this ?: owner,
FirFunctionSymbol(callableIdForClassConstructor()), FirFunctionSymbol(callableIdForClassConstructor()),
this?.visibility ?: Visibilities.UNKNOWN, this?.visibility ?: defaultVisibility(),
this?.hasExpectModifier() ?: false, this?.hasExpectModifier() ?: false,
this?.hasActualModifier() ?: false, this?.hasActualModifier() ?: false,
delegatedSelfTypeRef, delegatedSelfTypeRef,
@@ -1,6 +1,6 @@
FILE: enums.kt FILE: enums.kt
public? final? enum class Order : kotlin/Enum { public? final? enum class Order : kotlin/Enum {
public? constructor(): super<kotlin/Enum>() private constructor(): super<kotlin/Enum>()
public? final enum entry FIRST : kotlin/Any { public? final enum entry FIRST : kotlin/Any {
public? constructor(): super<kotlin/Any>() public? constructor(): super<kotlin/Any>()
@@ -60,7 +60,7 @@ FILE: enums.kt
public? abstract fun sayHello(): kotlin/Unit public? abstract fun sayHello(): kotlin/Unit
public? final? companion object Companion : kotlin/Any { public? final? companion object Companion : kotlin/Any {
public? constructor(): super<kotlin/Any>() private constructor(): super<kotlin/Any>()
public? final? const val G: <implicit> = Double(6.67E-11) public? final? const val G: <implicit> = Double(6.67E-11)
public? get(): <implicit> public? get(): <implicit>
@@ -2,11 +2,11 @@ FILE: enums2.kt
public? final? interface Some : kotlin/Any { public? final? interface Some : kotlin/Any {
} }
public? final? object O1 : Some { public? final? object O1 : Some {
public? constructor(): super<kotlin/Any>() private constructor(): super<kotlin/Any>()
} }
public? final? object O2 : Some { public? final? object O2 : Some {
public? constructor(): super<kotlin/Any>() private constructor(): super<kotlin/Any>()
} }
public? final? enum class SomeEnum : kotlin/Enum { public? final? enum class SomeEnum : kotlin/Enum {
@@ -15,7 +15,7 @@ FILE: nestedClass.kt
} }
public? final? object Obj : Base { public? final? object Obj : Base {
public? constructor(): super<Base>(String()) private constructor(): super<Base>(String())
} }
@@ -18,7 +18,7 @@ FILE: locals.kt
} }
lval code: <implicit> = object : Any { lval code: <implicit> = object : Any {
public? constructor(): super<Any>() private constructor(): super<Any>()
public? final? fun foo(): <implicit> { public? final? fun foo(): <implicit> {
^foo hashCode#() ^foo hashCode#()
+2 -2
View File
@@ -3,7 +3,7 @@ FILE: companion.kt
public constructor(): super<R|kotlin/Any|>() public constructor(): super<R|kotlin/Any|>()
public final companion object Companion : R|kotlin/Any| { public final companion object Companion : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
public final class InCompanion : R|kotlin/Any| { public final class InCompanion : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() public constructor(): super<R|kotlin/Any|>()
@@ -20,7 +20,7 @@ FILE: companion.kt
public constructor(): super<R|kotlin/Any|>() public constructor(): super<R|kotlin/Any|>()
public final companion object NamedCompanion : R|kotlin/Any| { public final companion object NamedCompanion : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
public final class InCompanion : R|kotlin/Any| { public final class InCompanion : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() public constructor(): super<R|kotlin/Any|>()
+2 -2
View File
@@ -2,11 +2,11 @@ FILE: enum.kt
public abstract interface Some : R|kotlin/Any| { public abstract interface Some : R|kotlin/Any| {
} }
public final object O1 : R|Some| { public final object O1 : R|Some| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
} }
public final object O2 : R|Some| { public final object O2 : R|Some| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
} }
public final enum class SomeEnum : R|kotlin/Enum| { public final enum class SomeEnum : R|kotlin/Enum| {
@@ -1,7 +1,7 @@
FILE: localImplicitBodies.kt FILE: localImplicitBodies.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
lval x: <ERROR TYPE REF: No result type for initializer> = object : R|kotlin/Any| { lval x: <ERROR TYPE REF: No result type for initializer> = object : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
public final fun sss(): <ERROR TYPE REF: Unresolved name: abc> { public final fun sss(): <ERROR TYPE REF: Unresolved name: abc> {
^sss <Unresolved name: abc>#() ^sss <Unresolved name: abc>#()
@@ -60,7 +60,7 @@ FILE: enums.kt
public abstract fun sayHello(): R|kotlin/Unit| public abstract fun sayHello(): R|kotlin/Unit|
public final companion object Companion : R|kotlin/Any| { public final companion object Companion : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>() private constructor(): super<R|kotlin/Any|>()
public final const val G: R|kotlin/Double| = Double(6.67E-11) public final const val G: R|kotlin/Double| = Double(6.67E-11)
public get(): R|kotlin/Double| public get(): R|kotlin/Double|
+1 -1
View File
@@ -15,7 +15,7 @@ FILE: nestedClass.kt
} }
public final object Obj : R|Base| { public final object Obj : R|Base| {
public constructor(): super<R|Base|>(String()) private constructor(): super<R|Base|>(String())
} }