diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/CallableDescriptorCollectors.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/CallableDescriptorCollectors.kt index 5f27d80f715..c3d2931bec5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/CallableDescriptorCollectors.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/CallableDescriptorCollectors.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.types.ErrorUtils import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.expressions.OperatorConventions +import org.jetbrains.kotlin.utils.singletonOrEmptyList public interface CallableDescriptorCollector { @@ -138,13 +139,16 @@ private object VariableCollector : CallableDescriptorCollector { - val memberScope = receiver.getMemberScope() - return (memberScope.getProperties(name) + getFakeDescriptorForObject(memberScope, name)).filterNotNull() + val memberScope = receiver.memberScope + val properties = memberScope.getProperties(name) + val fakeDescriptor = getFakeDescriptorForObject(memberScope, name) + return if (fakeDescriptor != null) properties + fakeDescriptor else properties } override fun getStaticMembersByName(receiver: JetType, name: Name, bindingTrace: BindingTrace): Collection { @@ -153,7 +157,7 @@ private object VariableCollector : CallableDescriptorCollector, bindingTrace: BindingTrace): Collection { // property may have an extension function type, we check the applicability later to avoid an early computing of deferred types - return (listOf(scope.getLocalVariable(name)) + scope.getProperties(name) + scope.getSyntheticExtensionProperties(receiverTypes, name)).filterNotNull() + return scope.getLocalVariable(name).singletonOrEmptyList() + scope.getProperties(name) + scope.getSyntheticExtensionProperties(receiverTypes, name) } override fun toString() = "VARIABLES"