/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . intent ions Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġorg . jetbrains . kotlin . psi . Jet Call Expression Ċ import Ġorg . jetbrains . kotlin . psi . Jet Function Literal Expression Ċ import Ġorg . jetbrains . kotlin . psi . Jet Psi Factory Ċ import Ġorg . jetbrains . kotlin . psi . Jet Expression Ċ import Ġorg . jetbrains . kotlin . psi . Jet Labeled Expression Ċ import Ġorg . jetbrains . kotlin . resolve . calls . call Util . getValue Arguments In Parent heses Ċ Ċ public Ġclass ĠMove Lambda Outside Parent heses Int ention Ġ: ĠJet Self Target ing Int ention < Jet Call Expression >( ĊĠĠĠĠĠĠĠ Ġ" move . lambda . outside . parent heses ", Ġjava Class ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġis Lambda Or Labeled Lambda ( expression : ĠJet Expression ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpression Ġis ĠJet Function Literal Expression Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( expression Ġis ĠJet Labeled Expression Ġ&& Ġis Lambda Or Labeled Lambda ( expression . getBase Expression ())) ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable To ( element : ĠJet Call Expression ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġelement . getValue Arguments In Parent heses () ĊĠĠĠĠĠĠĠ Ġreturn Ġargs . size Ġ> Ġ 0 Ġ&& Ġis Lambda Or Labeled Lambda ( args . last ?. get Argument Expression ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠJet Call Expression , Ġeditor : ĠEditor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġelement . getValue Arguments In Parent heses () ĊĠĠĠĠĠĠĠ Ġval Ġfunction Literal Ġ= Ġargs . last !!. get Argument Expression ()?. getText () ĊĠĠĠĠĠĠĠ Ġval Ġcal lee Text Ġ= Ġelement . get Cal lee Expression ()?. getText () ĊĠĠĠĠĠĠĠ Ġif Ġ( callee Text Ġ== Ġnull Ġ|| Ġfunction Literal Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġargs . sub List ( 0 , Ġargs . size Ġ- Ġ 1 ). map Ġ{ Ġit . as Element (). getText () Ġ?: Ġ"" Ġ}. join ToString (", Ġ", Ġ" (", Ġ") ") ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Call Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params Ġ== Ġ" () ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ callee Text Ġ$ function Literal " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ callee Text $ params Ġ$ function Literal " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelement . replace ( Jet Psi Factory ( element ). create Expression ( new Call )) ĊĠĠĠ Ġ} Ċ } Ċ