Use correct naming for additional built-in member lists
This commit is contained in:
@@ -19,14 +19,14 @@ class JvmMappedScope(
|
||||
) : FirTypeScope() {
|
||||
|
||||
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
|
||||
val whiteListSignatures = signatures.whiteListSignaturesByName[name]
|
||||
val visibleMethods = signatures.visibleMethodSignaturesByName[name]
|
||||
?: return declaredMemberScope.processFunctionsByName(name, processor)
|
||||
javaMappedClassUseSiteScope.processFunctionsByName(name) { symbol ->
|
||||
val jvmSignature = symbol.fir.computeJvmDescriptor()
|
||||
.replace("kotlin/Any", "java/lang/Object")
|
||||
.replace("kotlin/String", "java/lang/String")
|
||||
.replace("kotlin/Throwable", "java/lang/Throwable")
|
||||
if (jvmSignature in whiteListSignatures) {
|
||||
if (jvmSignature in visibleMethods) {
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
@@ -40,14 +40,14 @@ class JvmMappedScope(
|
||||
) = ProcessorAction.NONE
|
||||
|
||||
override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) {
|
||||
val constructorBlackList = signatures.constructorBlackList
|
||||
if (constructorBlackList.isNotEmpty()) {
|
||||
val hiddenConstructors = signatures.hiddenConstructors
|
||||
if (hiddenConstructors.isNotEmpty()) {
|
||||
javaMappedClassUseSiteScope.processDeclaredConstructors { symbol ->
|
||||
val jvmSignature = symbol.fir.computeJvmDescriptor()
|
||||
.replace("kotlin/Any", "java/lang/Object")
|
||||
.replace("kotlin/String", "java/lang/String")
|
||||
.replace("kotlin/Throwable", "java/lang/Throwable")
|
||||
if (jvmSignature !in constructorBlackList) {
|
||||
if (jvmSignature !in hiddenConstructors) {
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
@@ -80,14 +80,14 @@ class JvmMappedScope(
|
||||
}
|
||||
|
||||
companion object {
|
||||
data class Signatures(val whiteListSignaturesByName: Map<Name, Set<String>>, val constructorBlackList: Set<String>) {
|
||||
fun isEmpty() = whiteListSignaturesByName.isEmpty() && constructorBlackList.isEmpty()
|
||||
data class Signatures(val visibleMethodSignaturesByName: Map<Name, Set<String>>, val hiddenConstructors: Set<String>) {
|
||||
fun isEmpty() = visibleMethodSignaturesByName.isEmpty() && hiddenConstructors.isEmpty()
|
||||
fun isNotEmpty() = !isEmpty()
|
||||
}
|
||||
|
||||
// NOTE: No-arg constructors
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private val additionalConstructorBlackList = buildSet<String> {
|
||||
private val additionalHiddenConstructors = buildSet<String> {
|
||||
// kotlin.text.String pseudo-constructors should be used instead of java.lang.String constructors
|
||||
listOf(
|
||||
"",
|
||||
@@ -113,22 +113,22 @@ class JvmMappedScope(
|
||||
fun prepareSignatures(klass: FirRegularClass): Signatures {
|
||||
|
||||
val signaturePrefix = klass.symbol.classId.toString()
|
||||
val whiteListSignaturesByName = mutableMapOf<Name, MutableSet<String>>()
|
||||
JvmBuiltInsSignatures.WHITE_LIST_METHOD_SIGNATURES.filter { signature ->
|
||||
val visibleMethodsByName = mutableMapOf<Name, MutableSet<String>>()
|
||||
JvmBuiltInsSignatures.VISIBLE_METHOD_SIGNATURES.filter { signature ->
|
||||
signature.startsWith(signaturePrefix)
|
||||
}.map { signature ->
|
||||
// +1 to delete dot before function name
|
||||
signature.substring(signaturePrefix.length + 1)
|
||||
}.forEach {
|
||||
whiteListSignaturesByName.getOrPut(Name.identifier(it.substringBefore("("))) { mutableSetOf() }.add(it)
|
||||
visibleMethodsByName.getOrPut(Name.identifier(it.substringBefore("("))) { mutableSetOf() }.add(it)
|
||||
}
|
||||
|
||||
val constructorBlackList =
|
||||
(JvmBuiltInsSignatures.BLACK_LIST_CONSTRUCTOR_SIGNATURES + additionalConstructorBlackList)
|
||||
val hiddenConstructors =
|
||||
(JvmBuiltInsSignatures.HIDDEN_CONSTRUCTOR_SIGNATURES + additionalHiddenConstructors)
|
||||
.filter { it.startsWith(signaturePrefix) }
|
||||
.mapTo(mutableSetOf()) { it.substring(signaturePrefix.length + 1) }
|
||||
|
||||
return Signatures(whiteListSignaturesByName, constructorBlackList)
|
||||
return Signatures(visibleMethodsByName, hiddenConstructors)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user