Handle this typehints
[hiphop-php.git] / hphp / test / slow / array_key_cast.php
blob4306c1ba58b635117d01a6c4c50c7a9db50fb80f
1 <?hh
2 // Copyright 2004-present Facebook. All Rights Reserved.
4 function run_tests($tests) {
5 foreach ($tests as $test) {
6 list($func, $val) = $test;
7 try {
8 var_dump($func($val));
9 } catch (Exception $e) {
10 echo "Exception: " . $e->getMessage() . "\n";
15 // Use type-hints to test HHBBC optimizations
17 function test1($v) { return HH\array_key_cast($v); }
18 function test2(bool $v) { return HH\array_key_cast($v); }
19 function test3(bool $v) { return HH\array_key_cast($v); }
20 function test4(int $v) { return HH\array_key_cast($v); }
21 function test5(double $v) { return HH\array_key_cast($v); }
22 function test6(string $v) { return HH\array_key_cast($v); }
23 function test7(string $v) { return HH\array_key_cast($v); }
24 function test8(resource $v) { return HH\array_key_cast($v); }
25 function test9(array $v) { return HH\array_key_cast($v); }
26 function test10(vec $v) { return HH\array_key_cast($v); }
27 function test11(dict $v) { return HH\array_key_cast($v); }
28 function test12(keyset $v) { return HH\array_key_cast($v); }
29 function test13(stdclass $v) { return HH\array_key_cast($v); }
31 function func_maker1() { return 'HH\array_key_cast'; }
32 function func_maker2() {
33 static $x = 1;
34 return 'test' . $x++;
37 function make_tests($func) {
38 $tests = vec[
39 vec[$func(), null],
40 vec[$func(), false],
41 vec[$func(), true],
42 vec[$func(), 123],
43 vec[$func(), 789.123],
44 vec[$func(), 'abc'],
45 vec[$func(), '456'],
46 vec[$func(), STDIN],
47 vec[$func(), []],
48 vec[$func(), vec[]],
49 vec[$func(), dict[]],
50 vec[$func(), keyset[]],
51 vec[$func(), new stdclass]
53 return __hhvm_intrinsics\launder_value($tests);
56 run_tests(make_tests('func_maker1'));
57 run_tests(make_tests('func_maker2'));