/* Ċ Ġ* Ġ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 Ġfile . Ċ Ġ*/ Ċ Ċ package Ġcodegen . k type . non Re ified Ċ Ċ import Ġkotlin . test .* Ċ import Ġkotlin . reflect .* Ċ Ċ @ Opt In ( kotlin . Experimental Std lib Api :: class ) Ċ fun Ġ< T > Ġfoo () Ġ= ĠtypeOf < List < T >>() Ċ Ċ @ Test Ċ fun Ġtest _ fun () Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġfoo < Int >() ĊĠĠĠ ĠassertEquals ( List :: class , Ġl . classifier ) ĊĠĠĠ Ġval Ġt Ġ= Ġl . arguments . single (). type !!. classifier ĊĠĠĠ ĠassertTrue ( t Ġis ĠK Type Parameter ) ĊĠĠĠ ĠassertFalse (( t Ġas ĠK Type Parameter ). is Re ified ) ĊĠĠĠ ĠassertEquals (" T ", Ġ( t Ġas ĠK Type Parameter ). name ) Ċ } Ċ Ċ class ĠC < T > Ġ{ ĊĠĠĠ Ġ@ Opt In ( kotlin . Experimental Std lib Api :: class ) ĊĠĠĠ Ġfun Ġfoo () Ġ= ĠtypeOf < List < T >>() Ċ } Ċ Ċ @ Test Ċ fun Ġtest _ class () Ġ{ ĊĠĠĠ Ġval Ġl Ġ= ĠC < Int >(). foo () ĊĠĠĠ ĠassertEquals ( List :: class , Ġl . classifier ) ĊĠĠĠ Ġval Ġt Ġ= Ġl . arguments . single (). type !!. classifier ĊĠĠĠ ĠassertTrue ( t Ġis ĠK Type Parameter ) ĊĠĠĠ ĠassertFalse (( t Ġas ĠK Type Parameter ). is Re ified ) ĊĠĠĠ ĠassertEquals (" T ", Ġ( t Ġas ĠK Type Parameter ). name ) Ċ } Ċ Ċ @ Opt In ( kotlin . Experimental Std lib Api :: class ) Ċ fun Ġ< T > Ġbar 1 () Ġ= ĠtypeOf < List < T >>() Ċ Ċ @ Opt In ( kotlin . Experimental Std lib Api :: class ) Ċ fun Ġ< T > Ġbar 2 () Ġ= ĠtypeOf < List < T >>() Ċ Ċ class ĠD Ġ{ ĊĠĠĠ Ġ@ Opt In ( kotlin . Experimental Std lib Api :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġbar 1 () Ġ= ĠtypeOf < List < T >>() Ċ } Ċ Ċ @ Test Ċ fun Ġtest _ equality () Ġ{ ĊĠĠĠ Ġval Ġt 1 Ġ= Ġbar 1 < Int >(). arguments . single (). type !!. classifier ĊĠĠĠ Ġval Ġt 2 Ġ= Ġbar 2 < Int >(). arguments . single (). type !!. classifier ĊĠĠĠ Ġval Ġt 3 Ġ= ĠD (). bar 1 < Int >(). arguments . single (). type !!. classifier ĊĠĠĠ Ġassert Not Equals ( t 1 , Ġt 2 ) ĊĠĠĠ Ġassert Not Equals ( t 1 , Ġt 3 ) ĊĠĠĠ Ġassert Not Equals ( t 2 , Ġt 3 ) ĊĠĠĠ ĠassertEquals ( t 1 , Ġbar 1 < Int >(). arguments . single (). type !!. classifier ) ĊĠĠĠ ĠassertEquals ( t 2 , Ġbar 2 < Int >(). arguments . single (). type !!. classifier ) ĊĠĠĠ ĠassertEquals ( t 3 , ĠD (). bar 1 < Int >(). arguments . single (). type !!. classifier ) Ċ } Ċ Ċ @ Opt In ( kotlin . Experimental Std lib Api :: class ) Ċ inline Ġfun Ġ< re ified ĠT , ĠR Ġ: ĠT > Ġre ified Upper Bound () Ġ= ĠtypeOf < List < R >>() Ċ Ċ @ Test Ċ fun Ġtest _ re ified Upper Bound () Ġ{ ĊĠĠĠ Ġval Ġl Ġ= Ġre ified Upper Bound < Any , ĠAny >() ĊĠĠĠ ĠassertEquals ( List :: class , Ġl . classifier ) ĊĠĠĠ Ġval Ġr Ġ= Ġl . arguments . single (). type !!. classifier ĊĠĠĠ ĠassertTrue ( r Ġis ĠK Type Parameter ) ĊĠĠĠ ĠassertFalse (( r Ġas ĠK Type Parameter ). is Re ified ) ĊĠĠĠ ĠassertEquals (" R ", Ġ( r Ġas ĠK Type Parameter ). name ) ĊĠĠĠ Ġval Ġt Ġ= Ġ( r Ġas ĠK Type Parameter ). upper Bounds . single (). classifier ĊĠĠĠ ĠassertTrue ( t Ġis ĠK Type Parameter ) ĊĠĠĠ ĠassertTrue (( t Ġas ĠK Type Parameter ). is Re ified ) ĊĠĠĠ ĠassertEquals (" T ", Ġ( t Ġas ĠK Type Parameter ). name ) Ċ } Ċ