From aa485c3774d3ade86188b2c681d2fd41db4262b4 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Wed, 6 Sep 2017 15:59:03 +0300 Subject: [PATCH] IDEA-177741 Annotation folding does not fold parameter annotations --- .../folding/impl/JavaFoldingBuilderBase.java | 9 ++++++++- .../folding/JavaFolding8Test.groovy | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java index 0260d5ee7625..6d6e6f0a9b70 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java @@ -39,7 +39,10 @@ import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.tree.IElementType; -import com.intellij.psi.util.*; +import com.intellij.psi.util.PropertyUtilBase; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -549,6 +552,10 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem addDocCommentToFold(list, document, method); } + for (PsiParameter parameter : method.getParameterList().getParameters()) { + addAnnotationsToFold(parameter.getModifierList(), list, document); + } + PsiCodeBlock body = method.getBody(); if (body != null && !oneLiner) { addCodeBlockFolds(body, list, processedComments, document, quick); diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/folding/JavaFolding8Test.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/folding/JavaFolding8Test.groovy index 759214bf79d2..d911515a96e0 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/folding/JavaFolding8Test.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/folding/JavaFolding8Test.groovy @@ -91,4 +91,24 @@ class Test { assert foldingModel.getCollapsedRegionAtOffset(text.indexOf("System.out.println"))?.placeholderText == '{...}' } + + void "test parameter annotations"() { + configure """\ +class Some { + void m(@Anno("hello " + + "world") int a, + @Anno("goodbye " + + "world") int b) {} +} + +@interface Anno { + String value(); +} +""" + assert myFixture.editor.foldingModel.allFoldRegions.toString() == + '[FoldRegion -(11:141), placeholder=\'{...}\', ' + + 'FoldRegion -(24:66), placeholder=\'@{...}\', ' + + 'FoldRegion -(85:129), placeholder=\'@{...}\', ' + + 'FoldRegion -(159:183), placeholder=\'{...}\']' + } } \ No newline at end of file