package Ġcom . p interest . kt lint . rule set . experimental Ċ Ċ import Ġcom . p interest . kt lint . core . Rule Ċ import Ġcom . p interest . kt lint . core . ast . ElementType . AN NOT ATION Ċ import Ġcom . p interest . kt lint . core . ast . ElementType . AN NOT ATION _ ENTRY Ċ import Ġcom . p interest . kt lint . core . ast . ElementType . MODI FIER _ LIST Ċ import Ġcom . p interest . kt lint . core . ast . ElementType . WHITE _ SPACE Ċ import Ġcom . p interest . kt lint . core . ast . children Ċ import Ġcom . p interest . kt lint . core . ast . is Part Of Comment Ċ import Ġcom . p interest . kt lint . core . ast . line Indent Ċ import Ġcom . p interest . kt lint . core . ast . next Leaf Ċ import Ġcom . p interest . kt lint . core . ast . next Sibling Ċ import Ġcom . p interest . kt lint . core . ast . prev Leaf Ċ import Ġorg . jetbrains . kotlin . com . intellij . lang . AST Node Ċ import Ġorg . jetbrains . kotlin . com . intellij . psi . impl . source . tree . Leaf Psi Element Ċ Ċ /** Ċ Ġ* ĠL int Ġand Ġformat Ġthe Ġspacing Ġbetween Ġthe Ġmodifiers Ġin Ġand Ġafter Ġthe Ġlast Ġmodifier Ġin Ġa Ġmodifier Ġlist . Ċ Ġ*/ Ċ public Ġclass ĠModifier List Spacing Rule Ġ: ĠRule ("$ experimental Rule setId : modifier - list - spacing ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit ( ĊĠĠĠĠĠĠĠ Ġnode : ĠAST Node , ĊĠĠĠĠĠĠĠ Ġauto Correct : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġemit : Ġ( offset : ĠInt , ĠerrorMessage : ĠString , Ġcan Be Auto Correct ed : ĠBoolean ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node . elementType Ġ== ĠMO DI FIER _ LIST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. children () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġvisit Modifier Child ( it , Ġauto Correct , Ġemit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġwhitespace Ġof Ġthe Ġlast Ġentry Ġof Ġthe Ġmodifier Ġlist Ġis Ġactually Ġplaced Ġoutside Ġthe Ġmodifier Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisit Modifier Child ( node , Ġauto Correct , Ġemit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvisit Modifier Child ( ĊĠĠĠĠĠĠĠ Ġnode : ĠAST Node , ĊĠĠĠĠĠĠĠ Ġauto Correct : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġemit : Ġ( offset : ĠInt , ĠerrorMessage : ĠString , Ġcan Be Auto Correct ed : ĠBoolean ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node . elementType Ġ== ĠWH ITE _ SPACE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnode . next Sibling Ġ{ Ġit . elementType Ġ== ĠWH ITE _ SPACE Ġ&& Ġit . next Leaf ()?. is Part Of Comment () Ġ!= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . elementType Ġ== ĠWH ITE _ SPACE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take Unless Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReg ard less Ġof Ġelement Ġtype , Ġa Ġsingle Ġwhite Ġspace Ġis Ġalways Ġok Ġand Ġdoes Ġnot Ġneed Ġto Ġbe Ġchecked . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . text Ġ== Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. take Unless Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġsingle Ġnewline Ġafter Ġa Ġcomment Ġis Ġalways Ġok Ġand Ġdoes Ġnot Ġneed Ġfurther Ġchecking . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . text . trim (' Ġ', Ġ'\ t '). contains ('\ n ') Ġ&& Ġit . prev Leaf ()?. is Part Of Comment () Ġ== Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ Ġwhitespace Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . is Annotation Element () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . elementType Ġ== ĠMO DI FIER _ LIST Ġ&& Ġnode . last Child Node . is Annotation Element ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected WhiteSpace Ġ= Ġif Ġ( whitespace . text Contains ('\ n ')) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ Ġnode . line Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( whitespace . text Ġ!= Ġexpected WhiteSpace ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhitespace . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Single Ġwhitespace Ġor Ġnewline Ġexpected Ġafter Ġannotation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auto Correct ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( whitespace Ġas ĠLeaf Psi Element ). raw Replace With Text ( expected WhiteSpace ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhitespace . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Single Ġwhitespace Ġexpected Ġafter Ġmodifier ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auto Correct ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( whitespace Ġas ĠLeaf Psi Element ). raw Replace With Text (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAST Node ?. is Annotation Element () Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ġ!= Ġnull Ġ&& Ġ( elementType Ġ== ĠAN NOT ATION Ġ|| Ġelement Type Ġ== ĠAN NOT ATION _ ENTRY ) Ċ } Ċ