KT-7452 Code completion does not honor smart casts for 'this'

#KT-7452 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-05-06 16:01:40 +03:00
parent dc9523016a
commit 4c315b6219
4 changed files with 40 additions and 5 deletions
@@ -111,16 +111,18 @@ public class ReferenceVariantsHelper(
return descriptors
}
else {
val dataFlowInfo = context.getDataFlowInfo(expression)
val descriptorsSet = HashSet<DeclarationDescriptor>()
// process instance members that can be called via implicit receiver's instances
val receivers = resolutionScope.getImplicitReceiversWithInstance()
for (receiver in receivers) {
descriptorsSet.addMembersFromReceiver(receiver.getType(), CallType.NORMAL, kindFilter, nameFilter)
}
val dataFlowInfo = context.getDataFlowInfo(expression)
val receiverValues = receivers.map { it.getValue() }
for (receiverValue in receiverValues) {
for (variant in SmartCastUtils.getSmartCastVariantsWithLessSpecificExcluded(receiverValue, context, containingDeclaration, dataFlowInfo)) {
descriptorsSet.addMembersFromReceiver(variant, CallType.NORMAL, kindFilter, nameFilter)
}
}
// process extensions and non-instance members
for (descriptor in resolutionScope.getDescriptorsFiltered(kindFilter, nameFilter)) {