/* Ċ Ġ* Ġ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 . quick fix Ċ Ċ import Ġcom . intellij . code Insight . int ention . Int ention Action Ċ import Ġorg . jetbrains . kotlin . builtins . isFunction Type Ċ import Ġorg . jetbrains . kotlin . cfg . pseudo code . containing Declaration For Pseudo code Ċ import Ġorg . jetbrains . kotlin . descriptors . Value Descriptor Ċ import Ġorg . jetbrains . kotlin . diagnostics . Diagnostic Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . resolve To Call Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi .* Ċ import Ġorg . jetbrains . kotlin . resolve . Descriptor To Source Utils Ċ Ċ class ĠAdd Suspend Modifier Fix ( ĊĠĠĠ Ġelement : ĠK t Modifier List Owner , ĊĠĠĠ Ġprivate Ġval Ġdeclaration Name : ĠString ? Ċ ) Ġ: ĠAdd Modifier Fix ( element , ĠK t Tokens . SUS PEND _ KEYWORD ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetText () Ġ= Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠK t Named Function Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declaration Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Bundle . message (" fix . add . suspend . modifier . function ", Ġdeclaration Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Bundle . message (" fix . add . suspend . modifier . function . generic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠK t Type Reference Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declaration Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Bundle . message (" fix . add . suspend . modifier . receiver ", Ġdeclaration Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Bundle . message (" fix . add . suspend . modifier . receiver . generic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . getText () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠKotlin Single Int ention Action Factory () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Action ( diagnostic : ĠDiagnostic ): ĠInt ention Action ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdiagnostic . psi Element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Ġ= Ġ( element Ġas ? ĠK t Element )?. containing Declaration For Pseudo code Ġas ? ĠK t Named Function Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Name Ġ= Ġfunction . name Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAdd Suspend Modifier Fix ( function , Ġfunction Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠUn resolved Reference Factory Ġ: ĠKotlin Single Int ention Action Factory () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsuspend Extension Names Ġ= Ġset Of (" start Coroutine ", Ġ" create Coroutine ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Action ( diagnostic : ĠDiagnostic ): ĠInt ention Action ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Expr Ġ= Ġdiagnostic . psi Element Ġas ? ĠK t Name Reference Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ref Expr . get Referenced Name () Ġ! in Ġsuspend Extension Names ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Parent Ġ= Ġref Expr . parent Ġas ? ĠK t Call Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqualified Grand Parent Ġ= Ġcall Parent . parent Ġas ? ĠK t Qualified Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call Parent Ġ!== Ġqualified Grand Parent . selector Expression Ġ|| Ġref Expr Ġ!== Ġcall Parent . callee Expression ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Ġ= Ġqualified Grand Parent . receiver Expression Ġas ? ĠK t Name Reference Expression Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Descriptor Ġ= Ġreceiver . resolve To Call ()?. result ing Descriptor Ġas ? ĠValue Descriptor Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! receiver Descriptor . type . isFunction Type ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeclaration Ġ= ĠDescriptor To Source Utils . descriptor To Declaration ( receiver Descriptor ) Ġas ? ĠK t Callable Declaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declaration Ġis ĠK t Function ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariable Type Reference Ġ= Ġdeclaration . type Reference Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAdd Suspend Modifier Fix ( variable Type Reference , Ġdeclaration . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }