FIR LC: backward compatible visibility of enum entry ctor
This commit is contained in:
committed by
Ilya Kirillov
parent
9375f41936
commit
9a669092e3
+3
-2
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.asJava.classes
|
||||
package org.jetbrains.kotlin.light.classes.symbol
|
||||
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.PsiClassImplUtil
|
||||
@@ -11,7 +11,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.analysis.api.isValid
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.asJava.classes.KotlinSuperTypeListBuilder
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.createConstructors
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.createMethods
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
|
||||
-1
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.light.classes.symbol
|
||||
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.FirLightClassForEnumEntry
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.analysis.api.isValid
|
||||
|
||||
+8
-1
@@ -43,7 +43,14 @@ internal class FirLightConstructorForSymbol(
|
||||
override fun isDeprecated(): Boolean = _isDeprecated
|
||||
|
||||
private val _modifiers: Set<String> by lazyPub {
|
||||
setOf(constructorSymbol.toPsiVisibilityForMember(isTopLevel = false))
|
||||
// FIR treats an enum entry as an anonymous object w/ its own ctor (not default one).
|
||||
// On the other hand, FE 1.0 doesn't add anything; then ULC adds default ctor w/ package local visibility.
|
||||
// Technically, an enum entry should not be instantiated anywhere else, and thus FIR's modeling makes sense.
|
||||
// But, to be backward compatible, we manually force the visibility of enum entry ctor to be package private.
|
||||
if (containingClass is FirLightClassForEnumEntry)
|
||||
setOf(PsiModifier.PACKAGE_LOCAL)
|
||||
else
|
||||
setOf(constructorSymbol.toPsiVisibilityForMember(isTopLevel = false))
|
||||
}
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
|
||||
Reference in New Issue
Block a user