K2: introduce platform-dependent filtering for non-JVM platforms
This commit fixes a false negative in testData/cli/metadata/getOrDefault Related to KT-57268
This commit is contained in:
committed by
Space Team
parent
7599ff0ef1
commit
ed246d372b
+2
-10
@@ -5,20 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.scopes.jvm
|
||||
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPlatformDeclarationFilter
|
||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal object FirJvmPlatformDeclarationFilter {
|
||||
fun isFunctionAvailable(function: FirSimpleFunction, javaClassScope: FirTypeScope, session: FirSession): Boolean {
|
||||
// Optimization: only run the below logic for functions named "getOrDefault" and "remove", since only two functions with these names
|
||||
// in kotlin.collections.Map are currently annotated with @PlatformDependent.
|
||||
if (function.name !in namesToCheck) return true
|
||||
|
||||
if (!function.hasAnnotation(StandardNames.FqNames.platformDependentClassId, session)) return true
|
||||
if (FirPlatformDeclarationFilter.isFunctionAvailable(function, session)) return true
|
||||
|
||||
var isFunctionPresentInJavaAnalogue = false
|
||||
val jvmDescriptorOfKotlinFunction = function.computeJvmDescriptor()
|
||||
@@ -29,6 +23,4 @@ internal object FirJvmPlatformDeclarationFilter {
|
||||
}
|
||||
return isFunctionPresentInJavaAnalogue
|
||||
}
|
||||
|
||||
private val namesToCheck = listOf("getOrDefault", "remove").map(Name::identifier)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user