/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . ins pe ctions Ċ Ċ import Ġcom . intellij . code Inspection . Problems Holder Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi . Psi Comment Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi WhiteSpace Ċ import Ġorg . rust . ide . ins pe ctions . fixes . Subst itute Text Fix Ċ import Ġorg . rust . lang . core . psi . Rs Else Branch Ċ import Ġorg . rust . lang . core . psi . Rs If Expr Ċ import Ġorg . rust . lang . core . psi . Rs Visitor Ċ Ċ /** Ċ Ġ* ĠDetect s Ġ` else Ġif ` Ġstatements Ġbroken Ġby Ġnew Ġlines . ĠA Ġpartial Ġanalog ue Ċ Ġ* Ġof Ġthe ĠCli ppy 's Ġsus pic ious _ else _ formatting Ġlint . Ċ Ġ* ĠQuick Ġfix Ġ 1 : ĠRemove Ġ` else ` Ċ Ġ* ĠQuick Ġfix Ġ 2 : ĠJoin Ġ` else Ġif ` Ċ Ġ*/ Ċ class ĠRs D angling Else Inspection Ġ: ĠRs Local Inspection Tool () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget DisplayName () Ġ= Ġ" D angling Ġelse " ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Visitor ( holder : ĠPro blems Holder , Ġis On The Fly : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠRs Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Else Branch ( expr : ĠRs Else Branch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelse El Ġ= Ġexpr .` else ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbreak El Ġ= Ġelse El . right S iblings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop While Ġ{ Ġ( it Ġis ĠPsi WhiteSpace Ġ|| Ġit Ġis ĠPsi Comment ) Ġ&& Ġ'\ n ' Ġ! in Ġit . text Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġif El Ġ= Ġbreak El . right S iblings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop While Ġ{ Ġit Ġ! is ĠRs If Expr Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠText Range ( 0 , Ġif El . start Offset In Parent Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfix 2 Range Ġ= ĠText Range ( else El . text Range . end Offset , Ġif El . text Range . start Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sus pic ious Ġ` else Ġif ` Ġformatting ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSubstitute Text Fix ( else El . range With Prev Space ( expr . prev Sibling ), Ġnull , Ġ" Remove Ġ` else ` "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSubstitute Text Fix ( fix 2 Range , Ġ" Ġ", Ġ" Join Ġ` else Ġif ` ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPsi Element . range With Prev Space ( prev : ĠPsi Element ?) Ġ= Ġwhen Ġ( prev ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠPsi WhiteSpace Ġ-> Ġtext Range . union ( prev . text Range ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtext Range ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠPsi Element . right S iblings : ĠSequence < Psi Element > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġgenerate Sequence ( this . next Sibling ) Ġ{ Ġit . next Sibling Ġ} Ċ } Ċ