// Ġ! LANGUAGE : Ġ+ Variable Declaration In When Subject Ċ // Ġ! WITH _ NEW _ IN FER ENCE Ċ Ċ fun Ġfoo ( s 1 : ĠInt , Ġs 2 : ĠInt ) Ġ= Ġs 1 Ġ+ Ġs 2 Ċ Ċ fun Ġtest 1 ( x : ĠString ?) Ġ= ĊĠĠĠ Ġwhen Ġ( val Ġy Ġ= Ġx ?. length ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfoo ( <! DEBUG _ INFO _ SM ART CAST !> x <! >. length , Ġ<! DEBUG _ INFO _ SM ART CAST !> y <! >) ĊĠĠĠ Ġ} Ċ Ċ fun Ġtest 2 ( x : ĠString ?) Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġy Ġ= Ġrun Ġ{ Ġx !! Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" foo " Ġ-> Ġx <! UN SAFE _ CALL ! >. <! > length ĊĠĠĠĠĠĠĠ Ġ" bar " Ġ-> Ġy . length ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġtest 3 ( x : ĠString ?, Ġy : ĠString ?) Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġz Ġ= Ġx Ġ?: Ġy !! ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" foo " Ġ-> Ġx <! UN SAFE _ CALL ! >. <! > length ĊĠĠĠĠĠĠĠ Ġ" bar " Ġ-> Ġy <! UN SAFE _ CALL ! >. <! > length ĊĠĠĠĠĠĠĠ Ġ" baz " Ġ-> Ġz . length ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > Ġid ( x : ĠT ): ĠT Ġ= Ġx Ċ Ċ fun Ġtest 4 ( x : ĠString ?) Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġy Ġ= Ġid ( x !! )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" foo " Ġ-> Ġ<! DEBUG _ INFO _ SM ART CAST !> x <! >. length ĊĠĠĠĠĠĠĠ Ġ" bar " Ġ-> Ġy . length ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠInv < T >( val Ġdata : ĠT ) Ċ Ċ fun Ġtest 5 ( x : ĠInv < out ĠAny ?> ) Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġy Ġ= Ġx . data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ<! DEBUG _ INFO _ SM ART CAST !> y <! >. length Ġ// Ġshould Ġbe Ġok ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġx . data .< ! UN RESOL VED _ REFERENCE !> length <! > Ġ// Ġshould Ġbe Ġerror ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġtest 6 ( x : ĠInv < out ĠString ?> ) Ġ{ ĊĠĠĠ Ġwhen Ġ( val Ġ<! UNUSED _ VARIABLE !> y <! > Ġ= Ġx . data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ<! OI ; DEBUG _ INFO _ SM ART CAST !> x . data <! >< ! NI ; UN SAFE _ CALL ! >. <! > length Ġ// Ġshould Ġbe Ġok ĊĠĠĠ Ġ} Ċ }