/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 Ġ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 . fir . resolve . inference Ċ Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Res olvable Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Statement Ċ import Ġorg . jetbrains . kotlin . fir . resolve . calls . Candidate Ċ import Ġorg . jetbrains . kotlin . fir . types . Con e Kotlin Type Ċ import Ġorg . jetbrains . kotlin . fir . types . Con e Type Variable Type Constructor Ċ import Ġorg . jetbrains . kotlin . resolve . calls . inference . model . Constraint Storage Ċ Ċ abstract Ġclass ĠF ir Inference Session Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT : ĠF ir Inference Session Ġ= Ġobject Ġ: ĠF ir Inference Session () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Run Completion ( candidate : ĠC andidate ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġcurrent Constraint System : ĠConstraint Storage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠConstraint Storage . Empty ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġadd Part ially Resolved Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġadd Error Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġadd Comp et ed Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinfer Post p oned Variables ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlambda : ĠResolved Lambda Atom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Storage : ĠConstraint Storage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠMap < Con e Type Variable Type Constructor , ĠC one Kotlin Type > Ġ= Ġempty Map () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġcall Completed ( call : ĠT ): ĠBoolean Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġshould Complete Resolved Sub Atoms Of ( call : ĠT ): ĠBoolean Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġshould Run Completion ( candidate : ĠC andidate ): ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġcurrent Constraint System : ĠConstraint Storage ĊĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġadd Part ially Resolved Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement ĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġadd Error Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement ĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġadd Comp et ed Call ( call : ĠT ) Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement ĊĊĠĠĠ Ġabstract Ġfun Ġinfer Post p oned Variables ( ĊĠĠĠĠĠĠĠ Ġlambda : ĠResolved Lambda Atom , ĊĠĠĠĠĠĠĠ Ġinitial Storage : ĠConstraint Storage , ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġdiagnostic Ġholder ĊĠĠĠ Ġ): ĠMap < Con e Type Variable Type Constructor , ĠC one Kotlin Type > Ċ Ċ // ĠĠĠ ĠTODO : Ġdo Ġwe Ġneed Ġthis ? Ċ // ĠĠĠ Ġabstract Ġfun Ġwrite Only Stub s (): ĠBoolean ĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġcall Completed ( call : ĠT ): ĠBoolean Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement ĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġshould Complete Resolved Sub Atoms Of ( call : ĠT ): ĠBoolean Ġwhere ĠT Ġ: ĠF ir Res olvable , ĠT Ġ: ĠF ir Statement Ċ }