/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġ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 . types . checker Ċ Ċ import Ġorg . jetbrains . kotlin . container . Default Implementation Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . name . Class Id Ċ import Ġorg . jetbrains . kotlin . resolve . scopes . Member Scope Ċ import Ġorg . jetbrains . kotlin . types . Abstract Type Ref iner Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . Type Constructor Ċ import Ġorg . jetbrains . kotlin . types . model . Kotlin Type Marker Ċ import Ġorg . jetbrains . kotlin . types . Type Ref inement Ċ Ċ @ Default Implementation ( impl Ġ= ĠKotlin Type Ref iner . Default :: class ) Ċ abstract Ġclass ĠKotlin Type Ref iner Ġ: ĠAbstract Type Ref iner () Ġ{ ĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġref ine Type ( type : ĠKotlin Type Marker ): ĠKotlin Type ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġref ine Sup ert ypes ( class Descriptor : ĠClass Descriptor ): ĠCollection < Kotlin Type > ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġref ine Descriptor ( descriptor : ĠDeclaration Descriptor ): ĠClass ifier Descriptor ? ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġfind Class Ac ross Module Dependencies ( class Id : ĠClass Id ): ĠClass Descriptor ? ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġis Ref inement Needed For Module ( module Descriptor : ĠModule Descriptor ): ĠBoolean ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġis Ref inement Needed ForType Constructor ( type Constructor : ĠType Constructor ): ĠBoolean ĊĊĠĠĠ Ġ@ Type Ref inement ĊĠĠĠ Ġabstract Ġfun Ġ< S Ġ: ĠMember Scope > Ġget Or Put Scope For Class ( class Descriptor : ĠClass Descriptor , Ġcompute : Ġ() Ġ-> ĠS ): ĠS ĊĊĠĠĠ Ġobject ĠDefault Ġ: ĠKotlin Type Ref iner () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġref ine Type ( type : ĠKotlin Type Marker ): ĠKotlin Type Ġ= Ġtype Ġas ĠKotlin Type ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġref ine Sup ert ypes ( class Descriptor : ĠClass Descriptor ): ĠCollection < Kotlin Type > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclass Descriptor . type Constructor . sup ert ypes ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġref ine Descriptor ( descriptor : ĠDeclaration Descriptor ): ĠClass Descriptor ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfind Class Ac ross Module Dependencies ( class Id : ĠClass Id ): ĠClass Descriptor ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Ref inement Needed For Module ( module Descriptor : ĠModule Descriptor ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Ref inement Needed ForType Constructor ( type Constructor : ĠType Constructor ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Type Ref inement ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠMember Scope > Ġget Or Put Scope For Class ( class Descriptor : ĠClass Descriptor , Ġcompute : Ġ() Ġ-> ĠS ): ĠS Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Type Ref inement Ċ fun ĠKotlin Type Ref iner . ref ine Types ( types : ĠIterable < Kotlin Type >): ĠList < Kotlin Type > Ġ= Ġtypes . map Ġ{ Ġref ine Type ( it ) Ġ} Ċ Ċ class ĠRef < T Ġ: ĠAny >( var Ġvalue : ĠT ) Ċ Ċ @ Type Ref inement Ċ val ĠRE FIN ER _ CAP ABILITY Ġ= ĠModule Capability < Ref < Type Ref inement Support >> (" Kotlin Type Ref iner ") Ċ Ċ sealed Ġclass ĠType Ref inement Support ( val Ġis Enabled : ĠBoolean ) Ġ{ ĊĠĠĠ Ġobject ĠDisabled Ġ: ĠType Ref inement Support ( isEnabled Ġ= Ġfalse ) ĊĠĠĠ Ġobject ĠEnabled Un initialized Ġ: ĠType Ref inement Support ( isEnabled Ġ= Ġtrue ) ĊĠĠĠ Ġclass ĠEnabled ( val Ġtype Ref iner : ĠKotlin Type Ref iner ) Ġ: ĠType Ref inement Support ( isEnabled Ġ= Ġtrue ) Ċ } Ċ