make `Switch` constructor more precise
[hiphop-php.git] / hphp / test / slow / array_key_cast.php
blobb5114116c9b37cdd0860eaba81cb0bc2d0e1d724
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(float $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(varray $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'; }
33 abstract final class FuncMaker2Statics {
34 public static $x = 1;
36 function func_maker2() {
37 return 'test' . FuncMaker2Statics::$x++;
40 function make_tests($func) {
41 $tests = vec[
42 vec[$func(), null],
43 vec[$func(), false],
44 vec[$func(), true],
45 vec[$func(), 123],
46 vec[$func(), 789.123],
47 vec[$func(), 'abc'],
48 vec[$func(), '456'],
49 vec[$func(), fopen(__FILE__, 'r')],
50 vec[$func(), varray[]],
51 vec[$func(), vec[]],
52 vec[$func(), dict[]],
53 vec[$func(), keyset[]],
54 vec[$func(), new stdClass]
56 return __hhvm_intrinsics\launder_value($tests);
60 <<__EntryPoint>>
61 function main_array_key_cast() {
62 run_tests(make_tests(func_maker1<>));
63 run_tests(make_tests(func_maker2<>));