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