From 1c7e42f1d4ba62a302f8ea4ad038a00cfe97df62 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 16 Jan 2018 19:42:14 +0300 Subject: [PATCH] Collapsed comments containing `*` get removed in the summary line (KT-21994) #KT-21994 Fixed --- .../kotlin/idea/KotlinFoldingBuilder.kt | 27 ++++++++++--------- .../folding/checkCollapse/headerKDoc.kt | 4 +-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt index 17d8a231407..c05fbe53427 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt @@ -37,8 +37,10 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { - override fun buildLanguageFoldRegions(descriptors: MutableList, - root: PsiElement, document: Document, quick: Boolean) { + override fun buildLanguageFoldRegions( + descriptors: MutableList, + root: PsiElement, document: Document, quick: Boolean + ) { if (root !is KtFile) { return } @@ -80,9 +82,9 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { val type = node.elementType val parentType = node.treeParent?.elementType return type == KtNodeTypes.FUNCTION_LITERAL || - (type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) || - type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC || - type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR + (type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) || + type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC || + type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR } private fun getRangeToFold(node: ASTNode): TextRange { @@ -103,7 +105,7 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { node.elementType == KtNodeTypes.STRING_TEMPLATE -> "\"\"\"${getTrimmedFirstLineOfString(node).addSpaceIfNeeded()}...\"\"\"" node.elementType == KtNodeTypes.PRIMARY_CONSTRUCTOR -> "(...)" node.psi is KtImportList -> "..." - else -> "{...}" + else -> "{...}" } private fun getTrimmedFirstLineOfString(node: ASTNode): String { @@ -126,11 +128,11 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { private fun getCommentContents(line: String): String { return line.trim() - .replace("/**", "") - .replace("/*", "") - .replace("*/", "") - .replace("*", "") - .trim() + .removePrefix("/**") + .removePrefix("/*") + .removePrefix("*/") + .removePrefix("*") + .trim() } override fun isRegionCollapsedByDefault(node: ASTNode): Boolean { @@ -150,8 +152,7 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { return false } - override fun isCustomFoldingRoot(node: ASTNode) - = node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY + override fun isCustomFoldingRoot(node: ASTNode) = node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY private fun isFirstElementInFile(element: PsiElement): Boolean { val parent = element.parent diff --git a/idea/testData/folding/checkCollapse/headerKDoc.kt b/idea/testData/folding/checkCollapse/headerKDoc.kt index c715e6471a9..27ebee835d3 100644 --- a/idea/testData/folding/checkCollapse/headerKDoc.kt +++ b/idea/testData/folding/checkCollapse/headerKDoc.kt @@ -3,8 +3,8 @@ */ package some -/** - * Other +/** + * Other 1 * 2 */ // SET_TRUE: setCollapseFileHeader