From 3317a3f0db8147239413d93f2cbc03147e5f3ea2 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 26 Feb 2015 13:53:05 +0300 Subject: [PATCH] Treat method as simple if its code block doesn't contain any linefeeds (IDEA-136990) --- .../java/JavaSpacePropertyProcessor.java | 14 ++------------ .../formatter/java/JavaFormatterBracesTest.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index f544a071997d..821460ad9343 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -368,18 +368,8 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { private boolean shouldHandleAsSimpleMethod(@NotNull PsiMethod method) { if (!mySettings.KEEP_SIMPLE_METHODS_IN_ONE_LINE) return false; - - boolean skipElement = true; - for (PsiElement element : method.getChildren()) { - if (element instanceof PsiTypeElement) skipElement = false; - if (skipElement) continue; - - if (element.textContains('\n')) { - return false; - } - } - - return true; + PsiCodeBlock body = method.getBody(); + return body != null && !body.textContains('\n'); } private static int getMethodHeaderStartOffset(@NotNull PsiMethod method) { diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBracesTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBracesTest.java index 138e12cb649f..084727dda9f5 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBracesTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBracesTest.java @@ -329,4 +329,19 @@ public class JavaFormatterBracesTest extends AbstractJavaFormatterTest { "}\n" ); } + + public void testMethodIsSimple_IfCodeBlockHasNoLinefeeds() { + getSettings().KEEP_SIMPLE_METHODS_IN_ONE_LINE = true; + doClassTest( + "public ModelAndView handleRequestInternalEmptyMulti(\n" + + " final HttpServletRequest httpServletRequest,\n" + + " final HttpServletResponse response)\n" + + " throws IOException {}", + "public ModelAndView handleRequestInternalEmptyMulti(\n" + + " final HttpServletRequest httpServletRequest,\n" + + " final HttpServletResponse response)\n" + + " throws IOException {}" + ); + } + }