/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . ins pe ctions . substring Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . analyze Ċ import Ġorg . jetbrains . kotlin . idea . intent ions . call Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Constant Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Dot Qualified Expression Ċ import Ġorg . jetbrains . kotlin . resolve . calls . call Util . get Resolved Call Ċ import Ġorg . jetbrains . kotlin . resolve . constants . evaluate . Constant Expression Evaluator Ċ Ċ class ĠReplace Substring With Indexing Operation Inspection Ġ: ĠReplace Substring Inspection () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinspection Text ( element : ĠK t Dot Qualified Expression ): ĠString Ġ= ĊĠĠĠĠĠĠĠ ĠKotlin Bundle . message (" replace . substring . call . with . indexing . operation . call ") ĊĊĠĠĠ Ġoverride Ġval Ġdefault Fix Text : ĠString Ġget () Ġ= ĠKotlin Bundle . message (" replace . substring . call . with . indexing . operation . call ") ĊĠĠĠ Ġoverride Ġval Ġis Always Stable : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Dot Qualified Expression , Ġproject : ĠProject , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpression Ġ= Ġelement . call Expression ?. value Arguments ?. first OrNull ()?. get Argument Expression () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġelement . replace With ("$ 0 [$ 1 ]", Ġexpression ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable Inner ( element : ĠK t Dot Qualified Expression ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġelement . call Expression ?. value Arguments Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ!= Ġ 2 ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġarg 1 Ġ= Ġelement . getValue Argument ( 0 ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarg 2 Ġ= Ġelement . getValue Argument ( 1 ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġarg 1 Ġ+ Ġ 1 Ġ== Ġarg 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Dot Qualified Expression . getValue Argument ( index : ĠInt ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Context Ġ= Ġanalyze () ĊĠĠĠĠĠĠĠ Ġval Ġresolved Call Ġ= Ġcall Expression . get Resolved Call ( binding Context ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġexpression Ġ= Ġresolved Call . call . value Arguments [ index ]. get Argument Expression () Ġas ? ĠK t Constant Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġconstant Ġ= ĠConstant Expression Evaluator . get Constant ( expression , Ġbinding Context ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġconstant Type Ġ= Ġbinding Context . getType ( expression ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġconstant . getValue ( constant Type ) Ġas ? ĠInt ĊĠĠĠ Ġ} Ċ }