From 410f7661a6e6a6a258a366181fbe9249b855c39b Mon Sep 17 00:00:00 2001 From: Oleg Taratukhin Date: Tue, 1 Oct 2024 19:14:09 +0200 Subject: [PATCH] [ai-completion] ML-4039 improve end of multi-line comment detection GitOrigin-RevId: e8d8da381725b2ba96fea22bdef5eb9466aa956b --- .../intellij/cce/visitor/MultiLineVisitorUtils.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/evaluation-plugin/languages/src/com/intellij/cce/visitor/MultiLineVisitorUtils.kt b/plugins/evaluation-plugin/languages/src/com/intellij/cce/visitor/MultiLineVisitorUtils.kt index 0fa56defcabd..67de74e50b60 100644 --- a/plugins/evaluation-plugin/languages/src/com/intellij/cce/visitor/MultiLineVisitorUtils.kt +++ b/plugins/evaluation-plugin/languages/src/com/intellij/cce/visitor/MultiLineVisitorUtils.kt @@ -25,9 +25,10 @@ object MultiLineVisitorUtils { } } - private fun findEndOfDocstring(start: Int, lines: List, token: String): Int { - val end = lines.asSequence().drop(start).indexOfFirst { it.text.startsWith(token) } - return end.takeIf { it > 0 } ?: lines.size + private fun findEndOfMultiLineComment(start: Int, lines: List, token: String): Int { + val end = lines.asSequence().drop(start).indexOfFirst { it.text.contains(token) } + if (end < 0) return lines.size + return start + end } private fun LanguageSupporter.getCommentRanges(lines: List): List> { @@ -44,9 +45,10 @@ object MultiLineVisitorUtils { outer@ while (pos < lines.size) { val line = lines[pos].text.trimStart() if (line.startsWith(start)) { - val match = findEndOfDocstring(pos, lines, end) + val match = findEndOfMultiLineComment(pos, lines, end) add(pos to match) - pos = match + end.length + 1 + assert(pos < match) + pos = match + 1 continue@outer } pos++