From d5f8827a81efdc379a9c2b96f2f50f68fc93b5cd Mon Sep 17 00:00:00 2001 From: Clement Dessoude Date: Sat, 16 Oct 2021 10:39:13 +0200 Subject: [PATCH] feat: improve printing of class with long typeParameterList --- .../prettier-plugin-java/src/printers/classes.ts | 11 ++++++++--- .../unit-test/complex_generic_class/_input.java | 6 ++++++ .../unit-test/complex_generic_class/_output.java | 14 ++++++++++++++ .../test/unit-test/generic_class/_output.java | 6 +++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/classes.ts b/packages/prettier-plugin-java/src/printers/classes.ts index c521bc0ff..f5fe5f0a2 100644 --- a/packages/prettier-plugin-java/src/printers/classes.ts +++ b/packages/prettier-plugin-java/src/printers/classes.ts @@ -168,14 +168,19 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter { typeParameters(ctx: TypeParametersCtx) { const typeParameterList = this.visit(ctx.typeParameterList); - return rejectAndConcat([ctx.Less[0], typeParameterList, ctx.Greater[0]]); + return putIntoBraces( + typeParameterList, + softline, + ctx.Less[0], + ctx.Greater[0] + ); } typeParameterList(ctx: TypeParameterListCtx) { const typeParameter = this.mapVisit(ctx.typeParameter); - const commas = ctx.Comma ? ctx.Comma.map(elt => concat([elt, " "])) : []; + const commas = ctx.Comma ? ctx.Comma.map(elt => concat([elt, line])) : []; - return rejectAndJoinSeps(commas, typeParameter); + return group(rejectAndJoinSeps(commas, typeParameter)); } superclass(ctx: SuperclassCtx) { diff --git a/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_input.java b/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_input.java index cdc9813b5..d19f475d1 100644 --- a/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_input.java @@ -21,3 +21,9 @@ public void addAll(final Collection c) { } } + +public abstract class AbstractGenericClass { + public Value getValue() { + return new Value(); + } +} diff --git a/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_output.java b/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_output.java index 16657dd70..ed24f8f96 100644 --- a/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/complex_generic_class/_output.java @@ -21,3 +21,17 @@ public void addAll(final Collection c) { } } } + +public abstract class AbstractGenericClass< + Value extends AbstractValue, + Value1 extends AbstractValue, + Value2 extends AbstractValue, + Value3 extends AbstractValue, + Value4 extends AbstractValue, + Value5 extends AbstractValue +> { + + public Value getValue() { + return new Value(); + } +} 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 4c16c68d0..457b2f4fa 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 @@ -16,7 +16,11 @@ public T doSomething(T t) { } } -public class ComplexGenericClass, BEANTYPE, CONFIG extends BeanConfig> +public class ComplexGenericClass< + BEAN extends AbstractBean & BeanItemSelect, + BEANTYPE, + CONFIG extends BeanConfig +> extends AbstractBeanConfig { public List getBean(final Class beanClass) {