From ecb0c5017e42e35a47ebbd9aec47b6d36920305e Mon Sep 17 00:00:00 2001 From: Georgii Ustinov Date: Fri, 22 Aug 2025 11:23:12 +0300 Subject: [PATCH] [Java. Code Formatting] IDEA-377909 Fix wrong indentation for annotations placed before package statement (cherry picked from commit 5ade570c9930b22dd783caefd7bfc0161dbbc46e) IJ-CR-173265 GitOrigin-RevId: 048bd756136d90f631118c6c54d738782ff6b7a7 --- .../psi/formatter/java/AbstractJavaBlock.java | 1 + .../formatter/java/JavaEnterActionTest.java | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/java/java-frontback-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java b/java/java-frontback-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java index 2bf3182d09b9..4e53eb6e15a8 100644 --- a/java/java-frontback-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java +++ b/java/java-frontback-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java @@ -375,6 +375,7 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo if (parentType == JavaElementType.EXPRESSION_STATEMENT) return Indent.getNoneIndent(); if (parentType == JavaElementType.IMPLICIT_CLASS) return Indent.getNoneIndent(); if (parentType == JavaElementType.RECORD_COMPONENT) return Indent.getNoneIndent(); + if (parentType == JavaElementType.PACKAGE_STATEMENT) return Indent.getNoneIndent(); if (SourceTreeToPsiMap.treeElementToPsi(parent) instanceof PsiFile) { return Indent.getNoneIndent(); } diff --git a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaEnterActionTest.java b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaEnterActionTest.java index da89980cf8ea..995beabf62cf 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaEnterActionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaEnterActionTest.java @@ -1181,4 +1181,50 @@ public class JavaEnterActionTest extends AbstractBasicJavaEnterActionTest { """ ); } + + public void testEnterAfterTheFirstAnnotationBeforePackage() { + doTextTest("java", + """ + @MyAnno + package test; + """, + """ + @MyAnno + + package test; + """ + ); + } + + public void testEnterBetweenAnnotationBeforePackage() { + doTextTest("java", + """ + @MyAnno + @MyAnno2 + package test; + """, + """ + @MyAnno + + @MyAnno2 + package test; + """ + ); + } + + public void testEnterAfterTheLastAnnotationBeforePackage() { + doTextTest("java", + """ + @MyAnno + @MyAnno2 + package test; + """, + """ + @MyAnno + @MyAnno2 + + package test; + """ + ); + } } \ No newline at end of file