// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . plugins . groovy . code Inspection . cs Ċ Ċ import Ġcom . intellij . code Inspection . Problem Descriptor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . annotations . N ls Ċ import Ġorg . jetbrains . plugins . groovy . Gro ovy Bundle Ċ import Ġorg . jetbrains . plugins . groovy . code Inspection . Gr Inspection Util Ċ import Ġorg . jetbrains . plugins . groovy . code Inspection . Gro ovy Fix Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . Gro ovy Psi Element Factory Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . Gr Statement Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . Gr Variable Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . Gr Expression Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . Gr Reference Expression Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . util . Gr Statement Owner Ċ import Ġorg . jetbrains . plugins . groovy . refactor ing . Default Gro ovy Variable Name Validator Ċ import Ġorg . jetbrains . plugins . groovy . refactor ing . Gro ovy Name Suggestion Util Ċ Ċ internal Ġconst Ġval Ġdefault Fix Variable Name Ġ= Ġ" stored List " Ċ Ċ class ĠGr Replace Multi Assignment Fix ( val Ġsize : ĠInt ) Ġ: ĠGro ovy Fix () Ġ{ ĊĠ Ġoverride Ġfun Ġdo Fix ( project : ĠProject , Ġdescriptor : ĠProblem Descriptor ) Ġ{ ĊĠĠĠ Ġval Ġelement Ġ= Ġdescriptor . psi Element Ġas ? ĠGr Expression Ġ?: Ġreturn ĊĠĠĠ Ġval Ġgr Statement Ġ= Ġelement . parent Ġas ? ĠGr Statement Ġ?: Ġreturn ĊĠĠĠ Ġval Ġgr Statement Owner Ġ= Ġgr Statement . parent Ġas ? ĠGr Statement Owner Ġ?: Ġreturn ĊĊĠĠĠ Ġvar Ġinitializer Ġ= Ġelement . text ĊĠĠĠ Ġif Ġ( element Ġ! is ĠGr Reference Expression Ġ|| Ġelement . resolve () Ġ! is ĠGr Variable ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Ġ= ĠGro ovy Psi Element Factory . getInstance ( element . project ) ĊĠĠĠĠĠ Ġval Ġfix Variable Name Ġ= Ġgenerate Variable Name ( element ) ĊĠĠĠĠĠ Ġval Ġvar Definition Ġ= Ġfactory . createStatement FromText (" def Ġ${ fix Variable Name } Ġ= Ġ${ initializer }") ĊĠĠĠĠĠ Ġgr Statement Owner . add Statement Before ( var Definition , Ġgr Statement ) ĊĠĠĠĠĠ Ġinitializer Ġ= Ġfix Variable Name ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠGr Inspection Util . replace Expression ( element , Ġgenerate List Literal ( initializer )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġgenerate Variable Name ( expression : ĠGr Expression ): ĠString Ġ{ ĊĠĠĠ Ġval Ġvalidator Ġ= ĠDefault Gro ovy Variable Name Validator ( expression ) ĊĠĠĠ Ġval Ġsuggested Names Ġ= ĠGro ovy Name Suggestion Util . suggest Variable Name ByType ( expression . type , Ġvalidator ) ĊĠĠĠ Ġreturn Ġif Ġ( suggest ed Names . isNotEmpty ()) Ġsuggested Names [ 0 ] Ġelse Ġdefault Fix Variable Name ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġgenerate List Literal ( varName : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ( 0 .. ( size Ġ- Ġ 1 )). join ToString (", Ġ", Ġ"[", Ġ"] ") Ġ{ Ġ"$ varName [$ it ]" Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠGro ovy Bundle . message (" replace . with . list . literal ") ĊĠ Ġ} ĊĊĠ Ġ@ N ls ĊĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠGro ovy Bundle . message (" replace . with . list . literal ") ĊĠ Ġ} Ċ } Ċ