Fixed extensions completion for runtime receiver type in debugger (broken by previos changes in extensions completion)

This commit is contained in:
Valentin Kipyatkov
2015-10-28 19:07:07 +03:00
parent a26f6da12d
commit c9048266c8
4 changed files with 64 additions and 48 deletions
@@ -90,13 +90,22 @@ public class KotlinIndicesHelper(
}
public fun getCallableTopLevelExtensions(
nameFilter: (String) -> Boolean,
callTypeAndReceiver: CallTypeAndReceiver<*, *>,
position: KtExpression,
bindingContext: BindingContext
bindingContext: BindingContext,
nameFilter: (String) -> Boolean
): Collection<CallableDescriptor> {
val receiverTypes = callTypeAndReceiver.receiverTypes(bindingContext, position, moduleDescriptor, resolutionFacade, predictableSmartCastsOnly = false)
if (receiverTypes == null || receiverTypes.isEmpty()) return emptyList()
?: return emptyList()
return getCallableTopLevelExtensions(callTypeAndReceiver, receiverTypes, nameFilter)
}
public fun getCallableTopLevelExtensions(
callTypeAndReceiver: CallTypeAndReceiver<*, *>,
receiverTypes: Collection<KotlinType>,
nameFilter: (String) -> Boolean
): Collection<CallableDescriptor> {
if (receiverTypes.isEmpty()) return emptyList()
val receiverTypeNames = HashSet<String>()
receiverTypes.forEach { receiverTypeNames.addTypeNames(it) }