More accurate filtering of extensions
This commit is contained in:
@@ -144,10 +144,8 @@ public class ReferenceVariantsHelper(
|
||||
nameFilter: (Name) -> Boolean
|
||||
) {
|
||||
if (!kindFilter.excludes.contains(DescriptorKindExclude.Extensions)) {
|
||||
resolutionScope.getDescriptorsFiltered(kindFilter, nameFilter)
|
||||
.stream()
|
||||
.filterIsInstance(javaClass<CallableDescriptor>())
|
||||
.filterTo(this) { it.isExtensionCallable(receiver, isInfixCall, context, dataFlowInfo) }
|
||||
resolutionScope.getDescriptorsFiltered(kindFilter.exclude(DescriptorKindExclude.NonExtensions), nameFilter)
|
||||
.filterTo(this) { (it as CallableDescriptor).isExtensionCallable(receiver, isInfixCall, context, dataFlowInfo) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,8 @@ public fun CallableDescriptor.isExtensionCallable(
|
||||
bindingContext: BindingContext,
|
||||
dataFlowInfo: DataFlowInfo
|
||||
): Boolean {
|
||||
assert(getExtensionReceiverParameter() != null)
|
||||
|
||||
if (isInfixCall && (this !is SimpleFunctionDescriptor || getValueParameters().size() != 1)) {
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user