package Ġarrow . meta . plugins . pro ofs . ph ases . resolve Ċ Ċ import Ġarrow . meta . ph ases . Compiler Context Ċ import Ġarrow . meta . ph ases . resolve . base Line Type Checker Ċ import Ġarrow . meta . plugins . pro ofs . ph ases . Given Proof Ċ import Ġarrow . meta . plugins . pro ofs . ph ases . as Proof Ċ import Ġarrow . meta . plugins . pro ofs . ph ases . is Given Context Proof Ċ import Ġarrow . meta . plugins . pro ofs . ph ases . resolve . scopes . Pro ofs Scope Tower Ċ import Ġorg . jetbrains . kotlin . container . Container Consistency Exception Ċ import Ġorg . jetbrains . kotlin . container . get Ċ import Ġorg . jetbrains . kotlin . descriptors . Module Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . All Candidates Resolution Result Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Call Resolution Result Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Kotlin Call Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Kotlin Call Argument Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Kotlin Call Kind Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . No Value For Parameter Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Receiver Kotlin Call Argument Ċ import Ġorg . jetbrains . kotlin . resolve . calls . model . Type Argument Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . isError Ċ import Ġorg . jetbrains . kotlin . types . type Util . is Nothing Ċ import Ġorg . jetbrains . kotlin . types . type Util . is Type Parameter Ċ import Ġorg . jetbrains . kotlin . types . type Util . replace Arguments With Star Projection s Ċ Ċ fun ĠList < Given Proof >. matching Candidates ( ĊĠ Ġcompiler Context : ĠCompiler Context , ĊĠ Ġsuper Type : ĠKotlin Type Ċ ): ĠList < Given Proof > Ġ{ ĊĠ Ġval Ġpro ofs Ġ= Ġif Ġ( contains Errors Or Nothing ( super Type )) Ġempty List < Given Proof >() ĊĠ Ġelse Ġ{ ĊĠĠĠ Ġcompiler Context . run Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġmodule ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcomponent Provider ?. get < Pro ofs Call Resolver >() ?. let Ġ{ Ġpro ofs Call Resolver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpro ofs Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ matching Candidates . resolve Given Pro ofs ( super Type , Ġcompiler Context , Ġpro ofs Call Resolver , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpro ofs ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty List () ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠContainer Consistency Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġempty List < Given Proof >() ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġpro ofs Ċ } Ċ Ċ fun ĠList < Given Proof >. resolve Given Pro ofs ( ĊĠ Ġsuper Type : ĠKotlin Type , ĊĠ Ġcompiler Context : ĠCompiler Context , ĊĠ Ġpro ofs Call Resolver : ĠPro ofs Call Resolver , ĊĠ Ġmodule Descriptor : ĠModule Descriptor Ċ ): ĠList < Given Proof > Ġ{ ĊĠ Ġval Ġscope Tower Ġ= ĠPro ofs Scope Tower ( module Descriptor , Ġthis , Ġcompiler Context ) ĊĠ Ġval Ġkotlin Call : ĠKotlin Call Ġ= Ġkotlin Call ( super Type ) ĊĠ Ġval Ġcall Resolution Result Ġ= ĊĠĠĠ Ġpro ofs Call Resolver . run Ġ{ ĊĠĠĠĠĠ Ġresolve Candidates ( ĊĠĠĠĠĠĠĠ Ġscope Tower Ġ= Ġscope Tower , ĊĠĠĠĠĠĠĠ Ġkotlin Call Ġ= Ġkotlin Call , ĊĠĠĠĠĠĠĠ Ġexpected Type Ġ= Ġsuper Type . unwrap (), ĊĠĠĠĠĠĠĠ Ġcollect All Candidates Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġextension Receiver Ġ= Ġnull ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġreturn Ġcall Resolution Result . matching Given Pro ofs ( super Type ) Ċ } Ċ Ċ fun Ġcontains Errors Or Nothing ( var arg Ġtypes : ĠKotlin Type ) Ġ= ĊĠ Ġtypes . any Ġ{ Ġit . isError Ġ|| Ġit . is Nothing () Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠA Ġ: ĠGiven Proof > ĠCall Resolution Result . matching Given Pro ofs ( super Type : ĠKotlin Type ): ĠList < A > Ġ= ĊĠ Ġif Ġ( this Ġis ĠAll Candidates Resolution Result ) Ġ{ ĊĠĠĠ Ġ// ĠTODO Ġif Ġcandidate Ġdiagnostics Ġincludes ĠNo Value For Parameter Ġthen Ġwe Ġmay Ġwant Ġto Ġproceed Ġto Ġin duct ive Ġresolution ĊĠĠĠ Ġ// Ġif Ġthe Ġparam Ġwas Ġa Ġcontext ual Ġparam ĊĠĠĠ Ġval Ġselected Candidates Ġ= Ġall Candidates . filter Ġ{ ĊĠĠĠĠĠ Ġval Ġmissing Params Ġ= Ġit . diagnostics . first OrNull () ĊĠĠĠĠĠ Ġit . diagnostics . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġa Ġprovider Ġwith Ġcontext ual Ġarguments ĊĠĠĠĠĠĠĠ Ġmissing Params Ġis ĠNo Value For Parameter Ġ&& Ġmissing Params . parameter Descriptor . annotations . any Ġ{ Ġit . is Given Context Proof () Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpro ofs Ġ= Ġselected Candidates . flatMap Ġ{ ĊĠĠĠĠĠ Ġit . candidate . resolved Call . candidate Descriptor . as Proof (). as Iterable () ĊĠĠĠ Ġ}. filter Ġ{ ĊĠĠĠĠĠ Ġit Ġis ĠA Ġ&& Ġinclude In Candidates ( it . to , Ġsuper Type ) ĊĠĠĠ Ġ}. filter Is Instance < A >() ĊĠĠĠ Ġpro ofs . toList () ĊĠ Ġ} Ġelse Ġempty List () Ċ Ċ fun Ġinclude In Candidates ( a : ĠKotlin Type , Ġb : ĠKotlin Type ): ĠBoolean Ġ= ĊĠ Ġ( a . is Type Parameter () Ġ|| ĊĠĠĠ Ġbase Line Type Checker . is Subtype Of ( a . replace Arguments With Star Projection s (), Ġb . replace Arguments With Star Projection s ())) Ċ Ċ fun Ġkotlin Call ( super Type : ĠKotlin Type ): ĠKotlin Call Ġ= ĊĠ Ġobject Ġ: ĠKotlin Call Ġ{ ĊĠĠĠ Ġoverride Ġval Ġarguments In Parent hesis : ĠList < Kotlin Call Argument > Ġget () Ġ{ ĊĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġcall Kind : ĠKotlin Call Kind Ġ= ĠKotlin Call Kind . FUNCTION ĊĠĠĠ Ġoverride Ġval Ġexplicit Receiver : ĠReceiver Kotlin Call Argument ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġval Ġexternal Argument : ĠKotlin Call Argument ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġval Ġis For Implicit Invoke : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġname : ĠName Ġ= ĠName . identifier (" Proof Ġtype - checking Ġand Ġresolution ") ĊĠĠĠ Ġoverride Ġval Ġtype Arguments : ĠList < Type Argument > Ġ= Ġempty List () ĊĠĠĠ Ġoverride Ġval Ġdispatch Receiver For Invoke Extension : ĠReceiver Kotlin Call Argument ? Ġ= Ġnull ĊĠ Ġ} Ċ