folding builder style setters (IDEA-86541)

This commit is contained in:
Anna Kozlova
2012-05-25 15:56:41 +04:00
parent efcb13cdaa
commit 399c24c810
2 changed files with 23 additions and 1 deletions
@@ -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) {
@@ -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 = """\