don't fold one-line methods with multi-line parameter list

This commit is contained in:
peter
2014-07-25 17:28:15 +02:00
parent 2275508fe1
commit d448160737
2 changed files with 14 additions and 2 deletions
@@ -598,9 +598,15 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
Document document = method.getContainingFile().getViewProvider().getDocument();
PsiCodeBlock body = method.getBody();
if (body == null || document == null) {
PsiIdentifier nameIdentifier = method.getNameIdentifier();
if (body == null || document == null || nameIdentifier == null) {
return false;
}
if (document.getLineNumber(nameIdentifier.getTextRange().getStartOffset()) !=
document.getLineNumber(method.getParameterList().getTextRange().getEndOffset())) {
return false;
}
PsiJavaToken lBrace = body.getLBrace();
PsiJavaToken rBrace = body.getRBrace();
PsiStatement[] statements = body.getStatements();
@@ -568,14 +568,20 @@ class Test {
public void "test fold one-line methods"() {
configure """class Foo {
@Override
int someMethod() {
return 0;
}
int someOtherMethod(
int param) {
return 0;
}
}"""
PsiClass fooClass = JavaPsiFacade.getInstance(project).findClass('Foo', GlobalSearchScope.allScope(project))
def regions = myFixture.editor.foldingModel.allFoldRegions.sort { it.startOffset }
assert regions.size() == 2
assert regions.size() == 3
checkAccessorFolding(regions[0], regions[1], fooClass.methods[0])
}