/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . ide . intent ions Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . rust . lang . core . psi .* Ċ import Ġorg . rust . lang . core . psi . ext .* Ċ import Ġorg . rust . lang . core . types . ty . Ty Unit Ċ import Ġorg . rust . lang . core . types . type Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ class ĠUn wrap Single Expr Int ention Ġ: ĠRs Element Base Int ention Action < Un wrap Single Expr Int ention . Context >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Family Name () Ġ= Ġ" Remove Ġbr aces Ġfrom Ġsingle Ġexpression " ĊĊĠĠĠ Ġoverride Ġfun Ġfind Applicable Context ( project : ĠProject , Ġeditor : ĠEditor , Ġelement : ĠPsi Element ): ĠContext ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblock Expr Ġ= Ġelement . ancestor Strict < Rs Block Expr >() Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( block Expr . is Unsafe Ġ|| Ġblock Expr . is Async Ġ|| Ġblock Expr . is Try ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġblock Expr . block ĊĊĠĠĠĠĠĠĠ Ġval Ġsingle Statement Ġ= Ġblock . expanded St mts And Tail Expr . first . single OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġblock . expr ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpr Ġ!= Ġnull Ġ&& Ġblock . l brace . getNext Non Comment Sibling () Ġ== Ġexpr Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Remove Ġbr aces Ġfrom Ġsingle Ġexpression " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext ( block Expr , Ġexpr ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpr Ġ== Ġnull Ġ&& Ġsingle Statement Ġis ĠRs Expr Stmt Ġ&& Ġsingle Statement . expr . type Ġis ĠTy Unit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Remove Ġbr aces Ġfrom Ġsingle Ġexpression Ġstatement " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext ( block Expr , Ġsingle Statement . expr ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġctx . block Expr . parent ĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġis ĠRs Match Arm Ġ&& Ġparent . comma Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . add ( Rs Psi Factory ( project ). create Comma ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġctx . expr ĊĠĠĠĠĠĠĠ Ġval Ġrelative Caret Position Ġ= Ġmin ( max ( editor . caret Model . offset Ġ- Ġelement . text Offset , Ġ 0 ), Ġelement . text Length ) ĊĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ( ctx . block Expr . replace ( element ) Ġas ĠRs Expr ). text Offset ĊĠĠĠĠĠĠĠ Ġeditor . caret Model . moveTo Offset ( offset Ġ+ Ġrelative Caret Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠContext ( val Ġblock Expr : ĠRs Block Expr , Ġval Ġexpr : ĠRs Expr ) Ċ } Ċ