Skip to content

Commit 00908c6

Browse files
Merge pull request #398 from Shaolans/fix-271
fix: enforce blank line after body declaration
2 parents 0184cbf + fac27cd commit 00908c6

File tree

16 files changed

+44
-18
lines changed

16 files changed

+44
-18
lines changed

packages/prettier-plugin-java/scripts/single-printer-run/_output.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
public enum Enum {
2-
SOME_ENUM, ANOTHER_ENUM, LAST_ENUM;
2+
SOME_ENUM,
3+
ANOTHER_ENUM,
4+
LAST_ENUM,
35
}
46

57
public enum Enum {
6-
THIS_IS_GOOD("abc"), THIS_IS_FINE("abc");
8+
THIS_IS_GOOD("abc"),
9+
THIS_IS_FINE("abc");
10+
711
public static final String thisWillBeDeleted = "DELETED";
812

913
private final String value;
@@ -20,6 +24,7 @@ public String toString() {
2024
class CLassWithEnum {
2125

2226
public static enum VALID_THINGS {
23-
FIRST, SECOND;
27+
FIRST,
28+
SECOND,
2429
}
2530
}

packages/prettier-plugin-java/src/printers/classes.js

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class ClassesPrettierVisitor {
4343
const optionalTypeParams = this.visit(ctx.typeParameters);
4444
const optionalSuperClasses = this.visit(ctx.superclass);
4545
const optionalSuperInterfaces = this.visit(ctx.superinterfaces);
46-
const body = this.visit(ctx.classBody);
46+
const body = this.visit(ctx.classBody, { isNormalClassDeclaration: true });
4747

4848
let superClassesPart = "";
4949
if (optionalSuperClasses) {
@@ -113,7 +113,7 @@ class ClassesPrettierVisitor {
113113
return group(rejectAndJoinSeps(commas, interfaceType));
114114
}
115115

116-
classBody(ctx) {
116+
classBody(ctx, param) {
117117
let content = "";
118118
if (ctx.classBodyDeclaration !== undefined) {
119119
const classBodyDeclsVisited = reject(
@@ -126,15 +126,24 @@ class ClassesPrettierVisitor {
126126

127127
content = rejectAndJoinSeps(separators, classBodyDeclsVisited);
128128

129+
// edge case when we have SemiColons
130+
let shouldHardline = false;
131+
ctx.classBodyDeclaration.forEach(elt => {
132+
if (
133+
(elt.children.classMemberDeclaration &&
134+
!elt.children.classMemberDeclaration[0].children.Semicolon) ||
135+
elt.children.constructorDeclaration
136+
) {
137+
shouldHardline = true;
138+
}
139+
});
140+
129141
if (
130-
!(
131-
ctx.classBodyDeclaration[0].children.classMemberDeclaration !==
132-
undefined &&
133-
(ctx.classBodyDeclaration[0].children.classMemberDeclaration[0]
134-
.children.fieldDeclaration !== undefined ||
135-
ctx.classBodyDeclaration[0].children.classMemberDeclaration[0]
136-
.children.Semicolon !== undefined)
137-
)
142+
(ctx.classBodyDeclaration[0].children.classMemberDeclaration ||
143+
ctx.classBodyDeclaration[0].children.constructorDeclaration) &&
144+
shouldHardline &&
145+
param &&
146+
param.isNormalClassDeclaration
138147
) {
139148
content = rejectAndConcat([hardline, content]);
140149
}

packages/prettier-plugin-java/test/unit-test/blank_lines/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class BlankLines {
2+
23
public int i = 1;
34
public int j = 2;
45

packages/prettier-plugin-java/test/unit-test/char_literal/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class CharLiteral {
2+
23
final char singleQuote = '\'';
34

45
final char backslash = '\\';

packages/prettier-plugin-java/test/unit-test/classes/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ class LocalClassDeclaration {}
1212
}
1313

1414
class ClassWithSemicolon {
15+
1516
private FieldOneClass fieldOne;
1617
}

packages/prettier-plugin-java/test/unit-test/comments/class/_output.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ private ArrayTable(ArrayTable<R, C, V> table) {
200200

201201
private abstract static class ArrayMap<K, V>
202202
extends IteratorBasedAbstractMap<K, V> {
203+
203204
private final ImmutableMap<K, Integer> keyIndex;
204205

205206
private ArrayMap(ImmutableMap<K, Integer> keyIndex) {
@@ -234,7 +235,6 @@ public boolean isEmpty() {
234235
Entry<K, V> getEntry(final int index) {
235236
checkElementIndex(index, size());
236237
return new AbstractMapEntry<K, V>() {
237-
238238
@Override
239239
public K getKey() {
240240
return ArrayMap.this.getKey(index);
@@ -255,7 +255,6 @@ public V setValue(V value) {
255255
@Override
256256
Iterator<Entry<K, V>> entryIterator() {
257257
return new AbstractIndexedListIterator<Entry<K, V>>(size()) {
258-
259258
@Override
260259
protected Entry<K, V> get(final int index) {
261260
return getEntry(index);
@@ -572,7 +571,6 @@ public Set<Cell<R, C, V>> cellSet() {
572571
@Override
573572
Iterator<Cell<R, C, V>> cellIterator() {
574573
return new AbstractIndexedListIterator<Cell<R, C, V>>(size()) {
575-
576574
@Override
577575
protected Cell<R, C, V> get(final int index) {
578576
return getCell(index);
@@ -638,6 +636,7 @@ public Map<R, V> column(C columnKey) {
638636
}
639637

640638
private class Column extends ArrayMap<R, V> {
639+
641640
final int columnIndex;
642641

643642
Column(int columnIndex) {
@@ -728,6 +727,7 @@ public Map<C, V> row(R rowKey) {
728727
}
729728

730729
private class Row extends ArrayMap<C, V> {
730+
731731
final int rowIndex;
732732

733733
Row(int rowIndex) {
@@ -816,7 +816,6 @@ public Collection<V> values() {
816816
@Override
817817
Iterator<V> valuesIterator() {
818818
return new AbstractIndexedListIterator<V>(size()) {
819-
820819
@Override
821820
protected V get(int index) {
822821
return getValue(index);

packages/prettier-plugin-java/test/unit-test/comments/comments-blocks-and-statements/complex/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class PrettierTest {
2+
23
var x = 0;
34

45
public void myFunction(int arg1) {

packages/prettier-plugin-java/test/unit-test/comments/comments-blocks-and-statements/end-of-block/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class H {
3232
}
3333

3434
class I { // alpha
35+
3536
// beta
3637
int i;
3738
// one

packages/prettier-plugin-java/test/unit-test/complex_generic_class/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class GenericClass<BEAN extends Comparable<BEAN>> {
2+
23
private BEAN bean;
34

45
public GenericClass(BEAN bean) {

packages/prettier-plugin-java/test/unit-test/empty_statement/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public void doWhileWithEmptyStatement(boolean one) {
8787

8888
// Bug Fix: #356
8989
public class Test {
90+
9091
public TestField testField;
9192

9293
@Override

packages/prettier-plugin-java/test/unit-test/generic_class/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class GenericClass<BEAN> {
2+
23
private BEAN bean;
34

45
public GenericClass(BEAN bean) {

packages/prettier-plugin-java/test/unit-test/marker_annotations/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
@NormalAnnotation("value")
99
@MarkerAnnotation
1010
public class MarkerAnnotations {
11+
1112
@SingleMemberAnnotation2(
1213
name = "Something much long that breaks",
1314
date = "01/01/2018"

packages/prettier-plugin-java/test/unit-test/modifiers/_output.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public static interface InterfaceWithModifiers {
2525
@AnnotationOne
2626
@AnnotationTwo
2727
public abstract class AbstractClassWithModifiers {
28+
2829
@Annotation
2930
private static volatile String field;
3031

@@ -41,6 +42,7 @@ void onlyAnnotations() {}
4142
@AnnotationOne
4243
@AnnotationTwo
4344
public static final class ClassWithModifiers {
45+
4446
@AnnotationOne
4547
@AnnotationTwo
4648
private static final transient String CONSTANT = "abc";

packages/prettier-plugin-java/test/unit-test/prettier-ignore/method/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class PrettierIgnoreClass {
2+
23
int myInteger;
34

45
public void myPrettierIgnoreMethod(

packages/prettier-plugin-java/test/unit-test/prettier-ignore/multiple-ignore/_output.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class PrettierIgnoreClass {
2+
23
int myInteger;
34

45
public void myPrettierIgnoreMethod(

packages/prettier-plugin-java/test/unit-test/variables/_output.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
public class Variables {
2+
23
public static int STATIC_VARIABLE = 123;
34
private static final Logger LOGGER = LoggerFactory.getLogger(
45
ComplexFilterTest.class
@@ -45,7 +46,6 @@ public class Variables {
4546
private int octLiteral = 001;
4647

4748
private Interface anonymousClassVariable = new Interface() {
48-
4949
@Override
5050
void doSomething() {
5151
System.out.println("do something");

0 commit comments

Comments
 (0)