No error on use of `unsafe_cast`
[hiphop-php.git] / hphp / hack / test / typecheck / reduce_lambda.php
blob27c7dd30cd5180e31f876a25fc27e9d51426823d
1 <?hh // strict
2 // Copyright 2004-present Facebook. All Rights Reserved.
4 function reduce<Tv, Ta>(
5 Traversable<Tv> $traversable,
6 (function(Ta, Tv): Ta) $accumulator,
7 Ta $initial,
8 ): Ta {
9 return $initial;
11 function testit(varray<shape('page_id' => string, 'page_name' => string)> $v):void {
12 // So: Tv appears in a covariant position in a lambda parameter type
13 // Ta appears in a covariant position in the result
14 // And we have varray<shape(...) <: Traversable<Tv>
15 // So shape(...) <: Tv
16 // Also vec<nothing> <: Ta
17 // But
18 $pages_document = reduce<_,_>($v, ($pages_document, $res) ==> {
19 //hh_show_env();
20 $pages_document[] = Map {
21 "uid" => (string)$res['page_id'],
22 "text" => $res['page_name'],
24 //hh_show_env();
25 return $pages_document;
26 }, vec[]);