From ceb44ddccd3e64f28e18a3aaf6827e0800453be3 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 1 Dec 2020 11:24:02 +0300 Subject: [PATCH] [CMI] Improve CodeMetaInfoRenderer 1. Properly handle meta which start == end 2. Sort metainfos of one range by tag --- .../jetbrains/kotlin/codeMetaInfo/CodeMetaInfoRenderer.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codeMetaInfo/CodeMetaInfoRenderer.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codeMetaInfo/CodeMetaInfoRenderer.kt index dd41af597ab..63624ec8ad6 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codeMetaInfo/CodeMetaInfoRenderer.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codeMetaInfo/CodeMetaInfoRenderer.kt @@ -56,13 +56,17 @@ object CodeMetaInfoRenderer { current = next } } + // Here we need to handle meta infos which has start == end and close them immediately + checkOpenedAndCloseStringIfNeeded(opened, i, builder) builder.append(c) } checkOpenedAndCloseStringIfNeeded(opened, originalText.length, builder) } + private val metaInfoComparator = (compareBy { it.start } then compareByDescending { it.end }) then compareBy { it.tag } + private fun getSortedCodeMetaInfos(metaInfos: Collection): List { - return metaInfos.sortedWith(compareBy { it.start }.then(compareByDescending { it.end })) + return metaInfos.sortedWith(metaInfoComparator) } private fun closeString(result: StringBuilder) = result.append("")