diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther.java new file mode 100644 index 000000000000..010d3561f631 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther.java @@ -0,0 +1,16 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public boolean simpleField1 = true; + public boolean simpleField2 = true; + @NotNull + public Integer annotatedField1 = 2; + public boolean simpleField3 = true; + @NotNull + public Integer annotatedField2 = 2; + public boolean simpleField4 = true; + @NotNull + private Integer annotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther_after.java new file mode 100644 index 000000000000..3f6d256c0f34 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedAndNonAnnotatedFieldsRespectEachOther_after.java @@ -0,0 +1,25 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public boolean simpleField1 = true; + + public boolean simpleField2 = true; + + + @NotNull + public Integer annotatedField1 = 2; + + public boolean simpleField3 = true; + + + @NotNull + public Integer annotatedField2 = 2; + + public boolean simpleField4 = true; + + + @NotNull + private Integer annotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields.java new file mode 100644 index 000000000000..933eabfb2a7a --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields.java @@ -0,0 +1,10 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public final Boolean b = false; + public final Boolean a = false; + @NotNull + public Boolean d = false; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields_after.java new file mode 100644 index 000000000000..12f1e1c7d064 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/annotatedFieldAfterNonAnnotatedFields_after.java @@ -0,0 +1,12 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public final Boolean b = false; + public final Boolean a = false; + + + @NotNull + public Boolean d = false; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation.java new file mode 100644 index 000000000000..b81923949f48 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation.java @@ -0,0 +1,15 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class ClassWithAnnotations { + public final boolean simpleField1 = true; + private @Nullable + final Integer annotatedField1 = 10; + public Boolean simpleField2 = false; + public @NotNull Integer annotatedField2 = 1; + private Boolean simpleField3 = false; + @NotNull + private Integer getAnnotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation_after.java new file mode 100644 index 000000000000..8cb9ec0546bb --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/differentAnnotationLocation_after.java @@ -0,0 +1,21 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class ClassWithAnnotations { + public final boolean simpleField1 = true; + + + private @Nullable + final Integer annotatedField1 = 10; + public Boolean simpleField2 = false; + + + public @NotNull Integer annotatedField2 = 1; + private Boolean simpleField3 = false; + + + @NotNull + private Integer getAnnotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed.java new file mode 100644 index 000000000000..010d3561f631 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed.java @@ -0,0 +1,16 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public boolean simpleField1 = true; + public boolean simpleField2 = true; + @NotNull + public Integer annotatedField1 = 2; + public boolean simpleField3 = true; + @NotNull + public Integer annotatedField2 = 2; + public boolean simpleField4 = true; + @NotNull + private Integer annotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed_after.java new file mode 100644 index 000000000000..5676863cad75 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/mixed_after.java @@ -0,0 +1,22 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + public boolean simpleField1 = true; + public boolean simpleField2 = true; + + + @NotNull + public Integer annotatedField1 = 2; + public boolean simpleField3 = true; + + + @NotNull + public Integer annotatedField2 = 2; + public boolean simpleField4 = true; + + + @NotNull + private Integer annotatedField3 = 2; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields.java new file mode 100644 index 000000000000..110371f3d919 --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields.java @@ -0,0 +1,12 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + @NotNull + public static Integer STATIC_FIELD = -1; + @NotNull + public Boolean a = true; + @NotNull + public Boolean d = false; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields_after.java new file mode 100644 index 000000000000..30523517d47c --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/multipleAnnotatedFields_after.java @@ -0,0 +1,16 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +public class ClassWithAnnotations { + @NotNull + public static Integer STATIC_FIELD = -1; + + + @NotNull + public Boolean a = true; + + + @NotNull + public Boolean d = false; +} diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace.java new file mode 100644 index 000000000000..124fa3ec868f --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace.java @@ -0,0 +1,12 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +class ClassWithAnnotations { + @NotNull + public Boolean d = false; +} + +class ClassWithoutAnnotations { + public Boolean a = false; +} \ No newline at end of file diff --git a/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace_after.java b/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace_after.java new file mode 100644 index 000000000000..124fa3ec868f --- /dev/null +++ b/java/java-tests/testData/psi/formatter/blankLinesAroundField/noBlankLinesAfterLBraceAndBeforeRBrace_after.java @@ -0,0 +1,12 @@ +package org.example; + +import org.jetbrains.annotations.NotNull; + +class ClassWithAnnotations { + @NotNull + public Boolean d = false; +} + +class ClassWithoutAnnotations { + public Boolean a = false; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterBlankLinesAroundFieldTest.kt b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterBlankLinesAroundFieldTest.kt new file mode 100644 index 000000000000..d89b3bb1c368 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavaFormatterBlankLinesAroundFieldTest.kt @@ -0,0 +1,29 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.psi.formatter.java + +import com.intellij.lang.java.JavaLanguage + +class JavaFormatterBlankLinesAroundFieldTest : JavaFormatterTestCase() { + override fun getBasePath(): String = "psi/formatter/blankLinesAroundField" + + override fun setUp() { + super.setUp() + customJavaSettings.BLANK_LINES_AROUND_FIELD_WITH_ANNOTATIONS = 2 + getSettings(JavaLanguage.INSTANCE).BLANK_LINES_AROUND_FIELD = 0 + } + + fun testAnnotatedFieldAfterNonAnnotatedFields() = doTest() + + fun testNoBlankLinesAfterLBraceAndBeforeRBrace() = doTest() + + fun testMultipleAnnotatedFields() = doTest() + + fun testDifferentAnnotationLocation() = doTest() + + fun testMixed() = doTest() + + fun testAnnotatedAndNonAnnotatedFieldsRespectEachOther() { + getSettings(JavaLanguage.INSTANCE).BLANK_LINES_AROUND_FIELD = 1 + doTest() + } +} \ No newline at end of file