KT-19154: Fix auto-import to check receiver for members properly

#KT-19154 fixed
This commit is contained in:
Simon Ogorodnik
2017-07-21 19:38:54 +03:00
parent f313001b2d
commit 094125c970
10 changed files with 141 additions and 26 deletions
@@ -403,20 +403,7 @@ abstract class CompletionSession(
}
if (receiverTypes != null && nameExpression.languageVersionSettings.supportsFeature(LanguageFeature.DslMarkersSupport)) {
val typesByDslScopes = LinkedHashMap<FqName, MutableList<ReceiverType>>()
receiverTypes
.mapNotNull { receiver ->
val dslMarkers = receiver.type.extractDslMarkerFqNames()
(receiver to dslMarkers).takeIf { dslMarkers.isNotEmpty() }
}
.forEach { (v, dslMarkers) -> dslMarkers.forEach { typesByDslScopes.getOrPut(it, { mutableListOf() }) += v } }
val shadowedDslReceivers = mutableSetOf<ReceiverType>()
typesByDslScopes.flatMapTo(shadowedDslReceivers) { (_, v) -> v.asSequence().drop(1).asIterable() }
receiverTypes -= shadowedDslReceivers
receiverTypes -= receiverTypes.shadowedByDslMarkers()
}
return receiverTypes