Closed jtkiesel closed 11 months ago
Long lines containing type arguments (i.e. those that previously violated printWidth) are now broken on type arguments the way Prettier JavaScript does (on TypeScript).
class Example { <A extends ShortClassName & ShortClassName & ShortClassName & ShortClassName, B extends ShortClassName & ShortClassName & ShortClassName & ShortClassName & ShortClassName, C extends ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> & ExtremelyLongAndObnoxiousInterfaceName & ExtremelyLongAndObnoxiousInterfaceName & ExtremelyLongAndObnoxiousInterfaceName> void example( ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName> parameter, ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> parameter ) { ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName> variable; ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> variable; ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> variable = new MyExtremelyLongAndObnoxiousClassName<>(); ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> variable = new MyExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName>(); ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName> aParticularlyLongAndObnoxiousNameForIllustrativePurposes = new MyExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName>(); new MyExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName<ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName>, ExtremelyLongAndObnoxiousClassName>() .method(); } }
class Example { < A extends ShortClassName & ShortClassName & ShortClassName & ShortClassName, B extends ShortClassName & ShortClassName & ShortClassName & ShortClassName & ShortClassName, C extends ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > & ExtremelyLongAndObnoxiousInterfaceName & ExtremelyLongAndObnoxiousInterfaceName & ExtremelyLongAndObnoxiousInterfaceName > void example( ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName > parameter, ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > parameter ) { ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName > variable; ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > variable; ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > variable = new MyExtremelyLongAndObnoxiousClassName<>(); ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > variable = new MyExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName >(); ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName > aParticularlyLongAndObnoxiousNameForIllustrativePurposes = new MyExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName >(); new MyExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName< ExtremelyLongAndObnoxiousClassName, ExtremelyLongAndObnoxiousClassName >, ExtremelyLongAndObnoxiousClassName >() .method(); } }
None
LGTM ! Thanks @jtkiesel !
What changed with this PR:
Long lines containing type arguments (i.e. those that previously violated printWidth) are now broken on type arguments the way Prettier JavaScript does (on TypeScript).
Example
Input
Output
Relative issues or prs:
None