/* Ċ Ġ* Ġ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 . createFrom Usage Ċ Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . rust . cargo . project . workspace . Package Origin Ċ import Ġorg . rust . lang . core . psi . Rs Mod Item Ċ import Ġorg . rust . lang . core . psi . Rs Path Ċ import Ġorg . rust . lang . core . psi . Rs Struct Item Ċ import Ġorg . rust . lang . core . psi . ext .* Ċ import Ġorg . rust . openapi ext . is UnitTest Mode Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T Ġ: ĠPsi Element > ĠaddTo Module ( target Module : ĠRs Mod , Ġelement : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( target Module Ġis ĠRs Mod Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget Module . add Before ( element , Ġtarget Module . r brace ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( target Module . last Child Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module . add ( element ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Module . add After ( element , Ġtarget Module . last Child ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġas ĠT Ċ } Ċ Ċ fun Ġget Visibility ( target : ĠRs Mod , Ġsource : ĠRs Mod ): ĠString Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġsource . containing C rate Ġ!= Ġtarget . containing C rate Ġ-> Ġ" pub Ġ" ĊĠĠĠ Ġsource Ġ!= Ġtarget Ġ-> Ġ" pub ( crate ) Ġ" ĊĠĠĠ Ġelse Ġ-> Ġ"" Ċ } Ċ Ċ fun Ġget Writable Path Target ( path : ĠRs Path ): ĠRs Qualified Named Element ? Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= Ġpath . qual ifier ?. reference ?. resolve () Ġas ? ĠRs Qualified Named Element ĊĠĠĠ Ġif Ġ( item ?. containing Cargo Package ?. origin Ġ!= ĠPackage Origin . WORK SPACE ) Ġreturn Ġnull ĊĠĠĠ Ġif Ġ(! is UnitTest Mode Ġ&& Ġ! item . is Writable ) Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġitem Ċ } Ċ Ċ sealed Ġclass ĠCallable Insertion Target Ġ{ ĊĠĠĠ Ġabstract Ġval Ġmodule : ĠRs Mod ĊĊĠĠĠ Ġclass ĠModule ( val Ġtarget : ĠRs Mod ) Ġ: ĠCallable Insertion Target () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmodule : ĠRs Mod Ġ= Ġtarget ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠItem ( val Ġitem : ĠRs Struct Or Enum Item Element ) Ġ: ĠCallable Insertion Target () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmodule : ĠRs Mod Ġ= Ġitem . containing Mod ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFind Ġeither Ġa Ġmodule Ġor Ġan ĠA DT Ġwhich Ġqual ifies Ġthe Ġpassed Ġpath . Ċ Ġ*/ Ċ fun Ġget Target Item For Function Call ( path : ĠRs Path ): ĠCallable Insertion Target ? Ġ{ ĊĠĠĠ Ġif Ġ( path . qual ifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġitem Ġ= Ġget Writable Path Target ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRs Mod Ġ-> ĠCallable Insertion Target . Module ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRs Struct Or Enum Item Element Ġ-> ĠCallable Insertion Target . Item ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠCallable Insertion Target . Module ( path . containing Mod ) Ċ } Ċ Ċ fun Ġinsert Struct ( target Module : ĠRs Mod , Ġstruct : ĠRs Struct Item , Ġsource Function : ĠRs Element ): ĠRs Struct Item Ġ{ ĊĠĠĠ Ġif Ġ( target Module Ġ== Ġsource Function . containing Mod ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanchor Ġ= Ġsource Function . ance stors . first OrNull Ġ{ Ġit . parent Ġ== Ġtarget Module Ġ} Ġ?: Ġsource Function ĊĠĠĠĠĠĠĠ Ġreturn Ġanchor . parent . add Before ( struct , Ġanchor ) Ġas ĠRs Struct Item ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠaddTo Module ( target Module , Ġstruct ) Ċ } Ċ