package Ġarrow . meta . ide . dsl . editor . annot ator Ċ Ċ import Ġarrow . meta . ide . Meta Ide Ċ import Ġarrow . meta . ide . ph ases . editor . extension . Extension Provider Ċ import Ġarrow . meta . ph ases . Extension Phase Ċ import Ġcom . intellij . lang . Language Ċ import Ġcom . intellij . lang . annotation . Annot ator Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Language Ċ import Ġorg . jetbrains . kotlin . idea . quick fix . Kotlin Single Int ention Action Factory Ċ import Ġorg . jetbrains . kotlin . idea . quick fix . Quick Fix Action Base Ċ Ċ interface ĠAnnot ator Syntax Ġ{ ĊĠ Ġ// ĠTODO : Ġconsider Ġ[ com . intellij . code Insight . navigation . Navigation G utter Icon Builder . install ( com . intellij . lang . annotation . Annotation Holder , Ġcom . intellij . psi . Psi Element ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġregisters Ġan ĠAnnot ator Ġfor Ġ[ lang ]. ĊĠĠ Ġ* ĠAnnot ators Ġadd Ġlanguage Ġspecific Ġannotations Ġto Ġa Ġfile . ĊĠĠ Ġ* ĠKeep Ġin Ġmind Ġthat Ġthere Ġmight Ġbe Ġmultiple Ġinstances Ġof Ġthe Ġsame ĠAnnot ator Ġat Ġruntime . ĊĠĠ Ġ* Ġ@ see ĠAnnot ator ĊĠĠ Ġ* Ġ@ see ĠKotlin Single Int ention Action Factory Ġand Ġall Ġits ĠSub types Ġfor Ġexamples ĊĠĠ Ġ* Ġ@ see ĠQuick Fix Action Base Ġand Ġall Ġits ĠSub types Ġfor Ġ[ action ] Ġor Ġ[ actions ForAll ] ĊĠĠ Ġ* Ġ``` kotlin : ank ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . Ide Plugin ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . Meta Ide ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . plugins . p urity . is Imp ure ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . invoke ĊĠĠ Ġ* Ġimport Ġcom . intellij . lang . annotation . Annot ator ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . idea . quick fix . Add Modifier Fix ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . lexer . Kt Tokens ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . psi . Kt Named Function ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . utils . addTo Std lib . safe As ĊĠĠ Ġ* ĊĠĠ Ġ* Ġval ĠMeta Ide . p urity Annot ator : ĠIde Plugin ĊĠĠ Ġ* ĠĠ Ġget () Ġ= Ġ" P urity Check ĠAnnot ator " Ġ{ ĊĠĠ Ġ* ĠĠĠĠ Ġmeta ( ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġadd Annot ator ( ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġannot ator Ġ= ĠAnnot ator Ġ{ Ġelement , Ġholder Ġ-> Ġ// Ġin Ġsome Ġsituations Ġthere Ġare Ġ 2 Ġor Ġmore Ġerror Ġannotations ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġelement . safe As < Kt Named Function >() ?. take If Ġ{ Ġit . is Imp ure Ġ} ?. let Ġ{ Ġf Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . create Error Annotation ( f , Ġ" Function Ġis Ġimp ure ") ?. let Ġ{ Ġerror Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . register Universal Fix ( Add Modifier Fix ( f , ĠK t Tokens . SUS PEND _ KEYWORD ), Ġf . ident ifying Element ?. text Range , Ġnull ) ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġ) ĊĠĠ Ġ* ĠĠĠĠ Ġ) ĊĠĠ Ġ* ĠĠ Ġ} ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ*/ ĊĠ Ġfun ĠMeta Ide . add Annot ator ( lang : ĠLanguage Ġ= ĠKotlin Language . INSTANCE , Ġannot ator : ĠAnnot ator ): ĠExtension Phase Ġ= ĊĠĠĠ ĠExtension Provider . Add Language Annot ator ( lang , Ġannot ator ) Ċ }