FIR: cache accessor symbols in JavaClassUseSiteMemberScope
This commit is contained in:
+13
-10
@@ -43,6 +43,7 @@ class JavaClassUseSiteMemberScope(
|
||||
) {
|
||||
private val typeParameterStack = klass.javaTypeParameterStack
|
||||
private val specialFunctions = hashMapOf<Name, Collection<FirNamedFunctionSymbol>>()
|
||||
private val accessorByNameMap = hashMapOf<Name, FirAccessorSymbol>()
|
||||
|
||||
override fun getCallableNames(): Set<Name> {
|
||||
return declaredMemberScope.getContainingCallableNamesIfPresent() + superTypesScope.getCallableNames()
|
||||
@@ -57,16 +58,18 @@ class JavaClassUseSiteMemberScope(
|
||||
setterSymbol: FirNamedFunctionSymbol?,
|
||||
syntheticPropertyName: Name,
|
||||
): FirAccessorSymbol {
|
||||
return buildSyntheticProperty {
|
||||
session = this@JavaClassUseSiteMemberScope.session
|
||||
name = syntheticPropertyName
|
||||
symbol = FirAccessorSymbol(
|
||||
accessorId = getterSymbol.callableId,
|
||||
callableId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, syntheticPropertyName)
|
||||
)
|
||||
delegateGetter = getterSymbol.fir
|
||||
delegateSetter = setterSymbol?.fir
|
||||
}.symbol
|
||||
return accessorByNameMap.getOrPut(syntheticPropertyName) {
|
||||
buildSyntheticProperty {
|
||||
session = this@JavaClassUseSiteMemberScope.session
|
||||
name = syntheticPropertyName
|
||||
symbol = FirAccessorSymbol(
|
||||
accessorId = getterSymbol.callableId,
|
||||
callableId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, syntheticPropertyName)
|
||||
)
|
||||
delegateGetter = getterSymbol.fir
|
||||
delegateSetter = setterSymbol?.fir
|
||||
}.symbol
|
||||
}
|
||||
}
|
||||
|
||||
override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// IGNORE_BACKEND: NATIVE
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
|
||||
// WITH_RUNTIME
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
open class A : HashMap<String, String>()
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
|
||||
// FILE: Test.java
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// IGNORE_BACKEND: NATIVE
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// IGNORE_BACKEND: NATIVE
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
abstract class A1 : Collection<String> {
|
||||
override val size: Int get() = 1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user