/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . formatter . blocks Ċ Ċ import Ġcom . intellij . formatting .* Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġorg . rust . ide . formatter . Rs Fmt Context Ċ import Ġorg . rust . ide . formatter . impl . compute Spacing Ċ Ċ /** Ċ Ġ* ĠSynt hetic Ġformatting Ġblock Ġwraps Ġa Ġsub sequence Ġof Ġsub Ġblocks Ċ Ġ* Ġand Ġpresents Ġitself Ġas Ġone Ġof Ġthe Ġmembers Ġof Ġthis Ġsub sequence . Ċ Ġ*/ Ċ class ĠSynt hetic Rs Fmt Block ( ĊĠĠĠ Ġval Ġrepresentative : ĠAST Block ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġsub Blocks : ĠList < Block >, ĊĠĠĠ Ġprivate Ġval Ġalignment : ĠAlignment ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġindent : ĠInd ent ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġwrap : ĠWrap ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġctx : ĠRs Fmt Context Ċ ) Ġ: ĠAST Block Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( sub Blocks . isNotEmpty ()) Ġ{ Ġ" tri ed Ġto Ġbuild Ġempty Ġsynthetic Ġblock " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtext Range Ġ= ĠText Range ( ĊĠĠĠĠĠĠĠ Ġsub Blocks . first (). text Range . start Offset , ĊĠĠĠĠĠĠĠ Ġsub Blocks . last (). text Range . end Offset ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetText Range (): ĠText Range Ġ= Ġtext Range ĊĊĠĠĠ Ġoverride Ġfun ĠgetNode (): ĠAST Node ? Ġ= Ġrepresentative ?. node ĊĊĠĠĠ Ġoverride Ġfun Ġget Alignment (): ĠAlignment ? Ġ= Ġalignment Ġ?: Ġrepresentative ?. alignment ĊĠĠĠ Ġoverride Ġfun Ġget Indent (): ĠInd ent ? Ġ= Ġindent Ġ?: Ġrepresentative ?. indent ĊĠĠĠ Ġoverride Ġfun Ġget Wrap (): ĠWrap ? Ġ= Ġwrap Ġ?: Ġrepresentative ?. wrap ĊĊĠĠĠ Ġoverride Ġfun Ġget Sub Blocks (): ĠList < Block > Ġ= Ġsub Blocks ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Attributes ( new Child Index : ĠInt ): ĠChild Attributes Ġ= ĠChild Attributes ( indent , Ġnull ) ĊĠĠĠ Ġoverride Ġfun Ġget Spacing ( child 1 : ĠBlock ?, Ġchild 2 : ĠBlock ): ĠSp acing ? Ġ= Ġcompute Spacing ( child 1 , Ġchild 2 , Ġctx ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Leaf (): ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġis Incomplete (): ĠBoolean Ġ= Ġsub Blocks . last (). isIn complete ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġfind First Non Synt hetic Child ()?. psi ?. containing File ?. text ?. let Ġ{ Ġtext Range . sub Sequence ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"< rust Ġsynthetic >" ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ text Ġ$ text Range " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind First Non Synt hetic Child (): ĠAST Node ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġchild Ġ= Ġsub Blocks . first ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSynt hetic Rs Fmt Block Ġ-> Ġchild . findFirst Non Synt hetic Child () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAST Block Ġ-> Ġchild . node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ