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