/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠThe ĠMe ow ool ĠOrganization ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠIn Ġaddition , Ġif Ġyou Ġmodified Ġthe Ġproject , Ġyou Ġmust Ġinclude Ġthe ĠMe ow ool Ċ Ġ* Ġorganization ĠURL Ġin Ġyour Ġcode Ġfile : Ġhttps :// github . com / me ow ool Ċ Ġ* Ċ Ġ* Ġå¦Ĥæŀľ æĤ¨ ä¿®æĶ¹ äºĨ æŃ¤ é¡¹çĽ® ï¼Į åĪĻ å¿ħé¡» ç¡® ä¿Ŀ æºĲ æĸĩä»¶ ä¸Ń åĮħåĲ« ĠMe ow ool Ġ ç»Ħç»ĩ ĠURL : Ġhttps :// github . com / me ow ool Ċ Ġ*/ Ċ package Ġcom . me ow ool . sw ee kt . lazy init Ċ Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . me ow ool . sw ee kt . Sw ee kt Names . Lazy Init Ċ import Ġcom . me ow ool . sw ee kt . Sw ee kt Names . reset Lazy Value Ċ import Ġcom . me ow ool . sw ee kt . Sw ee kt Names . reset Lazy Values Ċ import Ġcom . me ow ool . sw ee kt . cast OrNull Ċ import Ġorg . jetbrains . kotlin . diagnostics . Diagnostic Ċ import Ġorg . jetbrains . kotlin . psi . Kt Expression Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Trace Ċ import Ġorg . jetbrains . kotlin . resolve . calls . call Util . get Resolved Call Ċ import Ġorg . jetbrains . kotlin . resolve . calls . check ers . Call Checker Ċ import Ġorg . jetbrains . kotlin . resolve . calls . check ers . Call Checker Context Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Resolved Call Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Var arg Value Argument Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . fq Name Safe Ċ import Ġorg . jetbrains . kotlin . resolve . scopes . re ceiv ers . Expression Receiver Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ åĩ Ľ Ġ( R in Or z ) Ċ Ġ*/ Ċ object ĠReset Value Checker Ġ: ĠCall Checker Ġ{ ĊĠ Ġoverride Ġfun Ġcheck ( resolved Call : ĠResolved Call <* >, Ġreport On : ĠPsi Element , Ġcontext : ĠCall Checker Context ) Ġ{ ĊĠĠĠ Ġwhen Ġ( resolved Call . result ing Descriptor . fq Name Safe ) Ġ{ ĊĠĠĠĠĠ Ġreset Lazy Value Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Ġ= Ġresolved Call . extension Receiver . cast OrNull < Expression Receiver >() ?. expression ĊĠĠĠĠĠĠĠ Ġreceiver . require Lazy Property ( ĊĠĠĠĠĠĠĠĠĠ Ġcontext . trace , ĊĠĠĠĠĠĠĠĠĠ ĠLazy Init Errors . Reset Receiver Required Marked Property . on ( receiver Ġ?: Ġreport On ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreset Lazy Values Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvar arg Ġ= Ġresolved Call . value Arguments ByIndex ?. get ( 0 )?. cast OrNull < Var arg Value Argument >() ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġvar arg ?. arguments ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments Ġ== Ġnull Ġ|| Ġarguments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcontext . trace . report ( Lazy Init Errors . Reset Required At Least One Argument . on ( report On )) ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar arg . arguments . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġit . get Argument Expression () ĊĠĠĠĠĠĠĠĠĠ Ġexpr . require Lazy Property ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . trace , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Init Errors . Reset Argument Required Marked Property . on ( expr Ġ?: Ġreport On ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠK t Expression ?. require Lazy Property ( trace : ĠBinding Trace , Ġdiagnostic : ĠDiagnostic ) Ġ{ ĊĠĠĠ Ġval Ġproperty Ġ= Ġget Resolved Call ( trace . binding Context )?. result ing Descriptor ĊĠĠĠ Ġif Ġ( property Ġ== Ġnull Ġ|| Ġproperty . annotations . has Annotation ( Lazy Init ). not ()) Ġ{ ĊĠĠĠĠĠ Ġtrace . report ( diagnostic ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ