diff --git a/packages/prettier-plugin-java/src/printers/classes.ts b/packages/prettier-plugin-java/src/printers/classes.ts index 164a54180..f55361d6d 100644 --- a/packages/prettier-plugin-java/src/printers/classes.ts +++ b/packages/prettier-plugin-java/src/printers/classes.ts @@ -6,6 +6,7 @@ import type { AstPath, Doc } from "prettier"; import { builders } from "prettier/doc"; import { call, + definedKeys, each, hasDeclarationAnnotations, hasLeadingComments, @@ -42,33 +43,49 @@ export default { }, normalClassDeclaration(path, print) { - const { classExtends, classImplements, classPermits, typeParameters } = - path.node.children; - const header = ["class ", call(path, print, "typeIdentifier")]; - if (typeParameters) { - header.push(call(path, print, "typeParameters")); - } - if (classExtends) { - header.push(indent([line, call(path, print, "classExtends")])); - } - if (classImplements) { - header.push(indent([line, call(path, print, "classImplements")])); + const { children } = path.node; + const definedClauses = definedKeys(children, [ + "classExtends", + "classImplements", + "classPermits" + ]); + const hasMultipleClauses = definedClauses.length > 1; + const hasTypeParameters = children.typeParameters !== undefined; + const parts = ["class ", call(path, print, "typeIdentifier")]; + if (hasTypeParameters) { + const typeParameters = call(path, print, "typeParameters"); + parts.push( + hasMultipleClauses ? group(indent(typeParameters)) : typeParameters + ); } - if (classPermits) { - header.push(indent([line, call(path, print, "classPermits")])); + if (definedClauses.length) { + const separator = hasTypeParameters && !hasMultipleClauses ? " " : line; + const clauses = definedClauses.flatMap(clause => [ + separator, + call(path, print, clause) + ]); + const hasBody = + children.classBody[0].children.classBodyDeclaration !== undefined; + const clauseGroup = [ + hasTypeParameters && !hasMultipleClauses ? clauses : indent(clauses), + hasBody ? separator : " " + ]; + parts.push(hasMultipleClauses ? clauseGroup : group(clauseGroup)); + } else { + parts.push(" "); } - return [group(header), " ", call(path, print, "classBody")]; + return [group(parts), call(path, print, "classBody")]; }, classModifier: printSingle, typeParameters(path, print) { - return group([ + return [ "<", indent([softline, call(path, print, "typeParameterList")]), softline, ">" - ]); + ]; }, typeParameterList(path, print) { @@ -89,7 +106,7 @@ export default { classPermits: printClassPermits, interfaceTypeList(path, print) { - return group(printList(path, print, "interfaceType")); + return printList(path, print, "interfaceType"); }, classBody(path, print) { @@ -199,7 +216,7 @@ export default { const { typeParameters, annotation, throws } = path.node.children; const header: Doc[] = []; if (typeParameters) { - header.push(call(path, print, "typeParameters")); + header.push(group(call(path, print, "typeParameters"))); } if (annotation) { header.push(join(line, map(path, print, "annotation"))); @@ -322,7 +339,7 @@ export default { : "()" ); return children.typeParameters - ? [call(path, print, "typeParameters"), " ", ...header] + ? [group(call(path, print, "typeParameters")), " ", ...header] : header; }, @@ -379,11 +396,21 @@ export default { }, enumDeclaration(path, print) { - const header = ["enum", call(path, print, "typeIdentifier")]; - if (path.node.children.classImplements) { - header.push(call(path, print, "classImplements")); + const { children } = path.node; + const parts = ["enum ", call(path, print, "typeIdentifier")]; + if (children.classImplements) { + const body = children.enumBody[0].children; + const hasBody = + body.enumBodyDeclarations !== undefined || + body.enumConstantList !== undefined; + parts.push( + indent([line, call(path, print, "classImplements")]), + hasBody ? line : " " + ); + } else { + parts.push(" "); } - return join(" ", [...header, call(path, print, "enumBody")]); + return [group(parts), call(path, print, "enumBody")]; }, enumBody(path, print, options) { @@ -445,20 +472,40 @@ export default { recordDeclaration(path, print) { const { children } = path.node; - const header = ["record ", call(path, print, "typeIdentifier")]; + const parts = ["record ", call(path, print, "typeIdentifier")]; if (children.typeParameters) { - header.push(call(path, print, "typeParameters")); + parts.push(group(call(path, print, "typeParameters"))); } - header.push(call(path, print, "recordHeader")); + parts.push(call(path, print, "recordHeader")); if (children.classImplements) { - header.push(" ", call(path, print, "classImplements")); + const hasComponents = + children.recordHeader[0].children.recordComponentList !== undefined; + const hasBody = + children.recordBody[0].children.recordBodyDeclaration !== undefined; + const classImplements = [ + hasComponents ? " " : line, + call(path, print, "classImplements") + ]; + parts.push( + group([ + hasComponents ? classImplements : indent(classImplements), + hasBody ? line : " " + ]) + ); + } else { + parts.push(" "); } - return [group(header), " ", call(path, print, "recordBody")]; + return [group(parts), call(path, print, "recordBody")]; }, recordHeader(path, print) { return path.node.children.recordComponentList - ? indentInParentheses(call(path, print, "recordComponentList")) + ? [ + "(", + indent([softline, call(path, print, "recordComponentList")]), + softline, + ")" + ] : indentInParentheses(printDanglingComments(path), { shouldBreak: true }); }, diff --git a/packages/prettier-plugin-java/src/printers/helpers.ts b/packages/prettier-plugin-java/src/printers/helpers.ts index b3b1c418f..fc7a1f7b9 100644 --- a/packages/prettier-plugin-java/src/printers/helpers.ts +++ b/packages/prettier-plugin-java/src/printers/helpers.ts @@ -293,10 +293,7 @@ export function printClassPermits( path: AstPath, print: JavaPrintFn ) { - return group([ - "permits", - indent([line, group(printList(path, print, "typeName"))]) - ]); + return group(["permits", indent([line, printList(path, print, "typeName")])]); } export function printClassType( diff --git a/packages/prettier-plugin-java/src/printers/interfaces.ts b/packages/prettier-plugin-java/src/printers/interfaces.ts index 5c60ea63c..3f5cf2fa4 100644 --- a/packages/prettier-plugin-java/src/printers/interfaces.ts +++ b/packages/prettier-plugin-java/src/printers/interfaces.ts @@ -2,6 +2,7 @@ import type { Doc } from "prettier"; import { builders } from "prettier/doc"; import { call, + definedKeys, each, hasDeclarationAnnotations, indentInParentheses, @@ -35,19 +36,38 @@ export default { }, normalInterfaceDeclaration(path, print) { - const { interfaceExtends, interfacePermits, typeParameters } = - path.node.children; - const header = ["interface ", call(path, print, "typeIdentifier")]; - if (typeParameters) { - header.push(call(path, print, "typeParameters")); - } - if (interfaceExtends) { - header.push(indent([line, call(path, print, "interfaceExtends")])); + const { children } = path.node; + const definedClauses = definedKeys(children, [ + "interfaceExtends", + "interfacePermits" + ]); + const hasMultipleClauses = definedClauses.length > 1; + const hasTypeParameters = children.typeParameters !== undefined; + const parts = ["interface ", call(path, print, "typeIdentifier")]; + if (hasTypeParameters) { + const typeParameters = call(path, print, "typeParameters"); + parts.push( + hasMultipleClauses ? group(indent(typeParameters)) : typeParameters + ); } - if (interfacePermits) { - header.push(indent([line, call(path, print, "interfacePermits")])); + if (definedClauses.length) { + const separator = hasTypeParameters && !hasMultipleClauses ? " " : line; + const clauses = definedClauses.flatMap(clause => [ + separator, + call(path, print, clause) + ]); + const hasBody = + children.interfaceBody[0].children.interfaceMemberDeclaration !== + undefined; + const clauseGroup = [ + hasTypeParameters && !hasMultipleClauses ? clauses : indent(clauses), + hasBody ? separator : " " + ]; + parts.push(hasMultipleClauses ? clauseGroup : group(clauseGroup)); + } else { + parts.push(" "); } - return [group(header), " ", call(path, print, "interfaceBody")]; + return [group(parts), call(path, print, "interfaceBody")]; }, interfaceModifier: printSingle, diff --git a/packages/prettier-plugin-java/test/unit-test/classes/_input.java b/packages/prettier-plugin-java/test/unit-test/classes/_input.java index 11d9da50f..c94e0b7ee 100644 --- a/packages/prettier-plugin-java/test/unit-test/classes/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/classes/_input.java @@ -21,3 +21,46 @@ class ClassWithSemicolon { ; private FieldOneClass fieldOne; } + +class Aaaaaaaaaa extends Cccccccccc implements Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd implements Eeeeeeeeee { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd implements Eeeeeeeeee {} + +class Aaaaaaaaaa extends Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd implements Gggggggggg, Hhhhhhhhhh { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd implements Gggggggggg, Hhhhhhhhhh {} + +class Aaaaaaaaaa extends Hhhhhhhhhh implements Kkkkkkkkkk, Llllllllll { + + void a() {} +} + +class Aaaaaaaaaa extends Hhhhhhhhhh implements Kkkkkkkkkk, Llllllllll {} + +class Aaaaaaaaaa extends Hhhhhhhhhh implements Oooooooooo, Pppppppppp, Qqqqqqqqqq, Rrrrrrrrrr, Ssssssssss, Tttttttttt, Uuuuuuuuuu { + + void a() {} +} + +class Aaaaaaaaaa extends Hhhhhhhhhh implements Oooooooooo, Pppppppppp, Qqqqqqqqqq, Rrrrrrrrrr, Ssssssssss, Tttttttttt, Uuuuuuuuuu {} diff --git a/packages/prettier-plugin-java/test/unit-test/classes/_output.java b/packages/prettier-plugin-java/test/unit-test/classes/_output.java index 4326ae9df..d2bf99dc3 100644 --- a/packages/prettier-plugin-java/test/unit-test/classes/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/classes/_output.java @@ -15,3 +15,134 @@ class ClassWithSemicolon { private FieldOneClass fieldOne; } + +class Aaaaaaaaaa extends Cccccccccc implements Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa + extends Dddddddddd + implements Eeeeeeeeee +{ + + void a() {} +} + +class Aaaaaaaaaa + extends Dddddddddd + implements Eeeeeeeeee {} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc +> extends Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc +> extends Dddddddddd< + Eeeeeeeeee, + Ffffffffff, + Gggggggggg, + Hhhhhhhhhh, + Iiiiiiiiii +> { + + void a() {} +} + +class Aaaaaaaaaa + extends Dddddddddd + implements Gggggggggg, Hhhhhhhhhh +{ + + void a() {} +} + +class Aaaaaaaaaa + extends Dddddddddd + implements Gggggggggg, Hhhhhhhhhh {} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh + implements Kkkkkkkkkk, Llllllllll +{ + + void a() {} +} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh + implements Kkkkkkkkkk, Llllllllll {} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh< + Iiiiiiiiii, + Jjjjjjjjjj, + Kkkkkkkkkk, + Llllllllll, + Mmmmmmmmmm, + Nnnnnnnnnn + > + implements + Oooooooooo, + Pppppppppp, + Qqqqqqqqqq, + Rrrrrrrrrr, + Ssssssssss, + Tttttttttt, + Uuuuuuuuuu +{ + + void a() {} +} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh< + Iiiiiiiiii, + Jjjjjjjjjj, + Kkkkkkkkkk, + Llllllllll, + Mmmmmmmmmm, + Nnnnnnnnnn + > + implements + Oooooooooo, + Pppppppppp, + Qqqqqqqqqq, + Rrrrrrrrrr, + Ssssssssss, + Tttttttttt, + Uuuuuuuuuu {} diff --git a/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java b/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java index 809b8f558..66a8b1990 100644 --- a/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java @@ -81,7 +81,8 @@ @GwtCompatible(emulated = true) public final class ArrayTable extends AbstractTable - implements Serializable { + implements Serializable +{ /** * Returns the square of a given number @@ -198,8 +199,10 @@ private ArrayTable(ArrayTable table) { } } - private abstract static class ArrayMap - extends IteratorBasedAbstractMap { + private abstract static class ArrayMap< + K, + V + > extends IteratorBasedAbstractMap { private final ImmutableMap keyIndex; diff --git a/packages/prettier-plugin-java/test/unit-test/comments/interface/_output.java b/packages/prettier-plugin-java/test/unit-test/comments/interface/_output.java index 239c65199..629e4a975 100644 --- a/packages/prettier-plugin-java/test/unit-test/comments/interface/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/comments/interface/_output.java @@ -5,7 +5,8 @@ * This is the comment describing the interface */ public /*a*/ interface /*b*/ MyInterface - /*a*/ extends /*b*/ /*a*/ OfferedI /*b*/ /*a*/, /*b*/ /*a*/ RequiredI /*b*/ { + /*a*/ extends /*b*/ /*a*/ OfferedI /*b*/ /*a*/, /*b*/ /*a*/ RequiredI +/*b*/ { // comment /** * Javadoc diff --git a/packages/prettier-plugin-java/test/unit-test/enum/_input.java b/packages/prettier-plugin-java/test/unit-test/enum/_input.java index 1a803d1bf..00dc78ce3 100644 --- a/packages/prettier-plugin-java/test/unit-test/enum/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/enum/_input.java @@ -147,3 +147,19 @@ void printTest() { System.out.println("Hey there"); } } + +enum Aaaaaaaaaa implements Bbbbbbbbbb { + A +} + +enum Aaaaaaaaaa implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff { + A +} + +enum Aaaaaaaaaa implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff {} + +enum Aaaaaaaaaa implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff, Gggggggggg { + A +} + +enum Aaaaaaaaaa implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff, Gggggggggg {} diff --git a/packages/prettier-plugin-java/test/unit-test/enum/_output.java b/packages/prettier-plugin-java/test/unit-test/enum/_output.java index e0f706742..1a747ed6d 100644 --- a/packages/prettier-plugin-java/test/unit-test/enum/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/enum/_output.java @@ -162,3 +162,37 @@ void printTest() { System.out.println("Hey there"); } } + +enum Aaaaaaaaaa implements Bbbbbbbbbb { + A, +} + +enum Aaaaaaaaaa + implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff +{ + A, +} + +enum Aaaaaaaaaa + implements Bbbbbbbbbb, Cccccccccc, Dddddddddd, Eeeeeeeeee, Ffffffffff {} + +enum Aaaaaaaaaa + implements + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg +{ + A, +} + +enum Aaaaaaaaaa + implements + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg {} diff --git a/packages/prettier-plugin-java/test/unit-test/extends_abstract_class_and_implements_interfaces/_output.java b/packages/prettier-plugin-java/test/unit-test/extends_abstract_class_and_implements_interfaces/_output.java index 8c65fb0ba..0b4eb436b 100644 --- a/packages/prettier-plugin-java/test/unit-test/extends_abstract_class_and_implements_interfaces/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/extends_abstract_class_and_implements_interfaces/_output.java @@ -1,6 +1,7 @@ public class ExtendsAbstractClassAndImplementsInterfaces extends AbstractClass - implements Interface1, Interface2, Interface3, Interface4 { + implements Interface1, Interface2, Interface3, Interface4 +{ @Override public void abstractMethod() { diff --git a/packages/prettier-plugin-java/test/unit-test/generic_class/_output.java b/packages/prettier-plugin-java/test/unit-test/generic_class/_output.java index 1528cc7c7..0ead5c3d6 100644 --- a/packages/prettier-plugin-java/test/unit-test/generic_class/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/generic_class/_output.java @@ -20,8 +20,7 @@ public class ComplexGenericClass< BEAN extends AbstractBean & BeanItemSelect, BEANTYPE, CONFIG extends BeanConfig -> - extends AbstractBeanConfig { +> extends AbstractBeanConfig { public List getBean(final Class beanClass) { return new ArrayList<>(); diff --git a/packages/prettier-plugin-java/test/unit-test/interface/_input.java b/packages/prettier-plugin-java/test/unit-test/interface/_input.java index 04d5d924c..031d67360 100644 --- a/packages/prettier-plugin-java/test/unit-test/interface/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/interface/_input.java @@ -48,3 +48,39 @@ public interface InterfaceWithSemicolon { ; String STRING_1 = "STRING_1"; } + +sealed class Aaaaaaaaaa extends Cccccccccc permits Dddddddddd { + + void a() {} +} + +sealed class Aaaaaaaaaa extends Dddddddddd permits Eeeeeeeeee { + + void a() {} +} + +sealed class Aaaaaaaaaa extends Dddddddddd permits Eeeeeeeeee {} + +class Aaaaaaaaaa extends Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa extends Dddddddddd { + + void a() {} +} + +sealed class Aaaaaaaaaa extends Hhhhhhhhhh permits Kkkkkkkkkk, Llllllllll { + + void a() {} +} + +sealed class Aaaaaaaaaa extends Hhhhhhhhhh permits Kkkkkkkkkk, Llllllllll {} + +sealed class Aaaaaaaaaa extends Hhhhhhhhhh permits Oooooooooo, Pppppppppp, Qqqqqqqqqq, Rrrrrrrrrr, Ssssssssss, Tttttttttt, Uuuuuuuuuu { + + void a() {} +} + +sealed class Aaaaaaaaaa extends Hhhhhhhhhh permits Oooooooooo, Pppppppppp, Qqqqqqqqqq, Rrrrrrrrrr, Ssssssssss, Tttttttttt, Uuuuuuuuuu {} diff --git a/packages/prettier-plugin-java/test/unit-test/interface/_output.java b/packages/prettier-plugin-java/test/unit-test/interface/_output.java index f04489cbb..1304810d4 100644 --- a/packages/prettier-plugin-java/test/unit-test/interface/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/interface/_output.java @@ -5,7 +5,8 @@ public interface Interfaces { } public interface Interfaces - extends Interface1, Interface2, Interface3, Interface4 { + extends Interface1, Interface2, Interface3, Interface4 +{ boolean isAvailable(Object propertyId); public static final Method METHOD = SomeStatic.findMethod(); @@ -20,7 +21,8 @@ public interface Interfaces Interface5, Interface6, Interface7, - Interface8 { + Interface8 +{ boolean isAvailable(Object propertyId); public static final Method METHOD = SomeStatic.findMethod(); @@ -60,3 +62,122 @@ public interface EmptyInterface {} public interface InterfaceWithSemicolon { String STRING_1 = "STRING_1"; } + +sealed class Aaaaaaaaaa extends Cccccccccc permits Dddddddddd { + + void a() {} +} + +sealed class Aaaaaaaaaa + extends Dddddddddd + permits Eeeeeeeeee +{ + + void a() {} +} + +sealed class Aaaaaaaaaa + extends Dddddddddd + permits Eeeeeeeeee {} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc +> extends Dddddddddd { + + void a() {} +} + +class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc +> extends Dddddddddd< + Eeeeeeeeee, + Ffffffffff, + Gggggggggg, + Hhhhhhhhhh, + Iiiiiiiiii +> { + + void a() {} +} + +sealed class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh + permits Kkkkkkkkkk, Llllllllll +{ + + void a() {} +} + +sealed class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh + permits Kkkkkkkkkk, Llllllllll {} + +sealed class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh< + Iiiiiiiiii, + Jjjjjjjjjj, + Kkkkkkkkkk, + Llllllllll, + Mmmmmmmmmm, + Nnnnnnnnnn + > + permits + Oooooooooo, + Pppppppppp, + Qqqqqqqqqq, + Rrrrrrrrrr, + Ssssssssss, + Tttttttttt, + Uuuuuuuuuu +{ + + void a() {} +} + +sealed class Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg + > + extends Hhhhhhhhhh< + Iiiiiiiiii, + Jjjjjjjjjj, + Kkkkkkkkkk, + Llllllllll, + Mmmmmmmmmm, + Nnnnnnnnnn + > + permits + Oooooooooo, + Pppppppppp, + Qqqqqqqqqq, + Rrrrrrrrrr, + Ssssssssss, + Tttttttttt, + Uuuuuuuuuu {} diff --git a/packages/prettier-plugin-java/test/unit-test/records/_input.java b/packages/prettier-plugin-java/test/unit-test/records/_input.java index fbf45fc5b..537ce6cfa 100644 --- a/packages/prettier-plugin-java/test/unit-test/records/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/records/_input.java @@ -161,3 +161,27 @@ public record Record( @Schema(type = "integer", description = "A longer description ") Status status ) {} + +record Aaaaaaaaaa(Cccccccccc cccccccccc) implements Dddddddddd { + + void a() {} +} + +record Aaaaaaaaaa(Dddddddddd dddddddddd) implements Eeeeeeeeee { + + void a() {} +} + +record Aaaaaaaaaa(Dddddddddd dddddddddd) implements Eeeeeeeeee {} + +record Aaaaaaaaaa(Hhhhhhhhhh Hhhhhhhhhh) implements Iiiiiiiiii { + + void a() {} +} + +record Aaaaaaaaaa(Hhhhhhhhhh Hhhhhhhhhh) implements Iiiiiiiiii {} + +record Aaaaaaaaaa(Hhhhhhhhhh Hhhhhhhhhh) implements Iiiiiiiiii, Jjjjjjjjjj, Kkkkkkkkkk, Llllllllll, Mmmmmmmmmm, Nnnnnnnnnn { + + void a() {} +} diff --git a/packages/prettier-plugin-java/test/unit-test/records/_output.java b/packages/prettier-plugin-java/test/unit-test/records/_output.java index 50a7e1303..e38ca4158 100644 --- a/packages/prettier-plugin-java/test/unit-test/records/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/records/_output.java @@ -157,3 +157,61 @@ public record Record( @Schema(type = "integer", description = "A longer description ") Status status ) {} + +record Aaaaaaaaaa(Cccccccccc cccccccccc) implements Dddddddddd { + void a() {} +} + +record Aaaaaaaaaa( + Dddddddddd dddddddddd +) implements Eeeeeeeeee { + void a() {} +} + +record Aaaaaaaaaa( + Dddddddddd dddddddddd +) implements Eeeeeeeeee {} + +record Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg +>( + Hhhhhhhhhh Hhhhhhhhhh +) implements Iiiiiiiiii { + void a() {} +} + +record Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg +>( + Hhhhhhhhhh Hhhhhhhhhh +) implements Iiiiiiiiii {} + +record Aaaaaaaaaa< + Bbbbbbbbbb, + Cccccccccc, + Dddddddddd, + Eeeeeeeeee, + Ffffffffff, + Gggggggggg +>( + Hhhhhhhhhh Hhhhhhhhhh +) implements + Iiiiiiiiii, + Jjjjjjjjjj, + Kkkkkkkkkk, + Llllllllll, + Mmmmmmmmmm, + Nnnnnnnnnn +{ + void a() {} +}