Fixed caching

This commit is contained in:
Valentin Kipyatkov
2015-07-08 22:13:19 +03:00
parent 46a512215e
commit 48b163758f
@@ -47,10 +47,10 @@ class AdditionalScopesWithSyntheticExtensions(storageManager: StorageManager) :
class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by JetScope.Empty { class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by JetScope.Empty {
private val syntheticPropertyInClass = storageManager.createMemoizedFunctionWithNullableValues<Triple<JavaClassDescriptor, JetType, Name>, PropertyDescriptor> { triple -> private val syntheticPropertyInClass = storageManager.createMemoizedFunctionWithNullableValues<Triple<JavaClassDescriptor, JetType, Name>, PropertyDescriptor> { triple ->
syntheticPropertyInClass(triple.first, triple.second, triple.third) syntheticPropertyInClassNotCached(triple.first, triple.second, triple.third)
} }
private fun syntheticPropertyInClass(javaClass: JavaClassDescriptor, type: JetType, name: Name): PropertyDescriptor? { private fun syntheticPropertyInClassNotCached(javaClass: JavaClassDescriptor, type: JetType, name: Name): PropertyDescriptor? {
val memberScope = javaClass.getMemberScope(type.getArguments()) val memberScope = javaClass.getMemberScope(type.getArguments())
val getMethod = memberScope.getFunctions(toGetMethodName(name)).singleOrNull { isGoodGetMethod(it) } ?: return null val getMethod = memberScope.getFunctions(toGetMethodName(name)).singleOrNull { isGoodGetMethod(it) } ?: return null
@@ -107,7 +107,7 @@ class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by Jet
for (descriptor in classifier.getMemberScope(type.getArguments()).getAllDescriptors()) { for (descriptor in classifier.getMemberScope(type.getArguments()).getAllDescriptors()) {
if (descriptor is FunctionDescriptor) { if (descriptor is FunctionDescriptor) {
val propertyName = fromGetMethodName(descriptor.getName()) ?: continue val propertyName = fromGetMethodName(descriptor.getName()) ?: continue
addIfNotNull(syntheticPropertyInClass(classifier, type, propertyName)) addIfNotNull(syntheticPropertyInClass(Triple(classifier, type, propertyName)))
} }
} }
} }