FIR: add temporary access to Enum.getDeclaringClass (see KT-49653)
This commit is contained in:
committed by
TeamCityServer
parent
c2ab09fa84
commit
983fa4c8c7
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||
import org.jetbrains.kotlin.load.kotlin.SignatureBuildingComponents.inJavaLang
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -162,8 +163,7 @@ class JvmMappedScope(
|
||||
}
|
||||
|
||||
// NOTE: No-arg constructors
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private val additionalHiddenConstructors = buildSet<String> {
|
||||
private val additionalHiddenConstructors = buildSet {
|
||||
// kotlin.text.String pseudo-constructors should be used instead of java.lang.String constructors
|
||||
listOf(
|
||||
"",
|
||||
@@ -185,13 +185,19 @@ class JvmMappedScope(
|
||||
"Ljava/lang/Throwable;",
|
||||
"Ljava/lang/String;"
|
||||
).mapTo(this) { arguments -> "java/lang/Throwable.<init>($arguments)V" }
|
||||
|
||||
// TODO: remove after the end of getDeclaringClass/declaringClass deprecation period
|
||||
add("java/lang/Enum.<init>(Ljava/lang/String;I)V")
|
||||
}
|
||||
|
||||
// TODO: remove after the end of getDeclaringClass/declaringClass deprecation period
|
||||
private val additionalVisibleSignatures = inJavaLang("Enum", "getDeclaringClass()Ljava/lang/Class;")
|
||||
|
||||
fun prepareSignatures(klass: FirRegularClass, isMutable: Boolean): Signatures {
|
||||
|
||||
val signaturePrefix = klass.symbol.classId.toString()
|
||||
val visibleMethodsByName = mutableMapOf<Name, MutableSet<String>>()
|
||||
JvmBuiltInsSignatures.VISIBLE_METHOD_SIGNATURES.filter { signature ->
|
||||
(JvmBuiltInsSignatures.VISIBLE_METHOD_SIGNATURES + additionalVisibleSignatures).filter { signature ->
|
||||
signature in JvmBuiltInsSignatures.MUTABLE_METHOD_SIGNATURES == isMutable &&
|
||||
signature.startsWith(signaturePrefix)
|
||||
}.map { signature ->
|
||||
|
||||
Reference in New Issue
Block a user