diff --git a/plugins/completion-ml-ranking/src/com/intellij/completion/ml/sorting/MLSorter.kt b/plugins/completion-ml-ranking/src/com/intellij/completion/ml/sorting/MLSorter.kt index 5c25d6b1e721..4c3a3b1931b2 100644 --- a/plugins/completion-ml-ranking/src/com/intellij/completion/ml/sorting/MLSorter.kt +++ b/plugins/completion-ml-ranking/src/com/intellij/completion/ml/sorting/MLSorter.kt @@ -95,6 +95,8 @@ class MLSorter : CompletionFinalSorter() { lookupStorage.performanceTracker.sortingPerformed(itemsForScoring.size, System.currentTimeMillis() - startedTimestamp) + LOG.assertTrue(elements.size == finalRanking.size, "MLSorter shouldn't filter items") + return finalRanking } @@ -183,7 +185,7 @@ class MLSorter : CompletionFinalSorter() { element2score: Map, positionsBefore: Map, lookupStorage: MutableLookupStorage, - lookup: LookupImpl): Iterable { + lookup: LookupImpl): List { val shouldSort = element2score.values.none { it == null } && lookupStorage.shouldReRank() if (LOG.isDebugEnabled) { LOG.debug("ML sorting in completion used=$shouldSort for language=${lookupStorage.language.id}") @@ -233,7 +235,7 @@ class MLSorter : CompletionFinalSorter() { return result } - private fun Iterable.insertIgnoredItems(allItems: Iterable): Iterable { + private fun Iterable.insertIgnoredItems(allItems: Iterable): List { val sortedItems = this.iterator() return allItems.mapNotNull { item -> when { @@ -247,7 +249,9 @@ class MLSorter : CompletionFinalSorter() { private fun Iterable.removeDuplicatesIfNeeded(): Iterable = if (Registry.`is`("completion.ml.reorder.without.duplicates", false)) this.distinctBy { it.lookupString } else this - private fun Iterable.addDiagnosticsIfNeeded(positionsBefore: Map, reordered: Int, lookup: LookupImpl): Iterable { + private fun List.addDiagnosticsIfNeeded(positionsBefore: Map, + reordered: Int, + lookup: LookupImpl): List { if (CompletionMLRankingSettings.getInstance().isShowDiffEnabled) { var positionChanged = false this.forEachIndexed { position, element -> @@ -264,9 +268,9 @@ class MLSorter : CompletionFinalSorter() { return this } - private fun Iterable.markRelevantItemsIfNeeded(element2score: Map, - lookup: LookupImpl, - decoratingItemsPolicy: DecoratingItemsPolicy): Iterable { + private fun List.markRelevantItemsIfNeeded(element2score: Map, + lookup: LookupImpl, + decoratingItemsPolicy: DecoratingItemsPolicy): List { if (CompletionMLRankingSettings.getInstance().isDecorateRelevantEnabled) { val relevantItems = decoratingItemsPolicy.itemsToDecorate(this.map { element2score[it] ?: 0.0 }) for (index in relevantItems) {