diff --git a/java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilder.java b/java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilder.java index e183c5d8e9da..574314b1815d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilder.java +++ b/java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilder.java @@ -267,7 +267,7 @@ public class JavaFoldingBuilder extends CustomFoldingBuilder implements DumbAwar PsiCodeBlock body = method.getBody(); if (body == null) return false; PsiStatement[] statements = body.getStatements(); - if (statements.length != 1) return false; + if (statements.length == 0) return false; PsiStatement statement = statements[0]; if (PropertyUtil.isSimplePropertyGetter(method)) { if (statement instanceof PsiReturnStatement) { @@ -275,6 +275,7 @@ public class JavaFoldingBuilder extends CustomFoldingBuilder implements DumbAwar } } else if (PropertyUtil.isSimplePropertySetter(method)) { + if (statements.length > 1 && !(statements[1] instanceof PsiReturnStatement)) return false; if (statement instanceof PsiExpressionStatement) { PsiExpression expr = ((PsiExpressionStatement)statement).getExpression(); if (expr instanceof PsiAssignmentExpression) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/folding/JavaFoldingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/folding/JavaFoldingTest.groovy index 20830a89f107..f993262b32ac 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/folding/JavaFoldingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/folding/JavaFoldingTest.groovy @@ -168,6 +168,27 @@ class Test { assertNotNull closureFolds assertEquals(2, closureFolds.size()) } + + public void "test builder style setter"() { + myFoldingSettings.COLLAPSE_ACCESSORS = true + def text = """\ +class Foo { + private String bar; + + public Foo setBar(String bar) { + this.bar = bar; + return this; + } +} +""" + + configure text + def foldingModel = myFixture.editor.foldingModel as FoldingModelImpl + int indexOfBar = text.indexOf("this.bar") + def accessorStartFold = foldingModel.getCollapsedRegionAtOffset(indexOfBar) + assertNotNull accessorStartFold + assertFalse accessorStartFold.expanded + } public void "test closure folding doesn't expand when editing inside"() { def text = """\