/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 Ġ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 . intent ions Ċ Ċ import Ġcom . intellij . code Insight . int ention . Low Priority Action Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . resolve To Call Ċ import Ġorg . jetbrains . kotlin . idea . core . util . end Ċ import Ġorg . jetbrains . kotlin . idea . core . util . start Ċ import Ġorg . jetbrains . kotlin . psi . Kt Call Element Ċ import Ġorg . jetbrains . kotlin . psi . Kt Lambda Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value Argument Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value ArgumentList Ċ Ċ class ĠAdd Names To Following Arguments Int ention Ġ: ĠSelf Target ing Int ention < Kt Value Argument >( ĊĠĠĠ ĠK t Value Argument :: class . java , ĠKotlin Bundle . lazy Message (" add . names . to . this . argument . and . following . arguments ") Ċ ), ĠLow Priority Action Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Applicable To ( element : ĠK t Value Argument , Ġcaret Offset : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargument List Ġ= Ġelement . parent Ġas ? ĠK t Value ArgumentList Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠShadow ed Ġby ĠAdd Names To Call Arguments ĊĠĠĠĠĠĠĠ Ġif Ġ( argument List . arguments . first OrNull () Ġ== Ġelement ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠShadow ed Ġby ĠAdd Name To Argument ĊĠĠĠĠĠĠĠ Ġif Ġ( argument List . arguments . last OrNull Ġ{ Ġ! it . is Named () Ġ} Ġ== Ġelement ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġexpression Ġ= Ġelement . get Argument Expression () Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ ĠAdd Name To Argument Int ention . detect Name ToAdd ( element , ĠshouldBe Last Unnamed Ġ= Ġfalse ) Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expression Ġis ĠK t Lambda Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġexpression . text Range ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcaret Offset Ġ== Ġrange . start Ġ|| Ġcaret Offset Ġ== Ġrange . end ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Value Argument , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargument List Ġ= Ġelement . parent Ġas ? ĠK t Value ArgumentList Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcall Element Ġ= Ġargument List . parent Ġas ? ĠK t Call Element Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġresolved Call Ġ= Ġcall Element . resolve To Call () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġfor Ġ( argument Ġin Ġargument List . arguments . drop While Ġ{ Ġit Ġ!= Ġelement Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Name To Argument Int ention . apply ( argument , Ġresolved Call ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }