Use conditionals in sync_functions instead of section blocks
[hiphop-php.git] / hphp / test / slow / dynamic-ptr-throw.php
bloba513be523dc92a81c00a473f9a6a6cd4cf32509d
1 <?hh
3 function no_dyn() :mixed{ echo __FUNCTION__."\n"; }
4 <<__DynamicallyCallable>> function dyn() :mixed{ echo __FUNCTION__."\n"; }
5 <<__DynamicallyCallable>> function reified_fun<reify T>() :mixed{
6 echo __FUNCTION__."\n";
9 class Cls {
10 static function static_no_dyn() :mixed{ echo __METHOD__."\n"; }
11 function inst_no_dyn() :mixed{ echo __METHOD__."\n"; }
12 <<__DynamicallyCallable>> static function static_dyn() :mixed{echo __METHOD__."\n";}
13 <<__DynamicallyCallable>> function inst_dyn() :mixed{ echo __METHOD__."\n"; }
14 <<__DynamicallyCallable>> static function reified_dyn<reify T>() :mixed{
15 echo __METHOD__."\n";
19 function test_it($fname, $cname = null) :mixed{
20 try {
21 if ($cname) $f = HH\dynamic_class_meth($cname, $fname);
22 else $f = HH\dynamic_fun($fname);
23 } catch (InvalidArgumentException $ex) {
24 echo "Caught: ".$ex->getMessage()."\n";
25 return;
27 $f();
30 <<__EntryPoint>>
31 function main() :mixed{
32 set_error_handler(($_n, $str) ==> { echo "Warning: $str\n"; return true; });
34 test_it('dyn');
35 test_it('no_dyn');
36 test_it('static_dyn', 'Cls');
37 test_it('static_no_dyn', 'Cls');
39 test_it('inst_dyn', 'Cls');
40 test_it('inst_no_dyn', 'Cls');
42 test_it('bad_func_name');
43 test_it('bad_meth_name', 'Cls');
44 test_it('static_dyn', 'BadClassName');
46 test_it('reified_fun');
47 test_it('reified_dyn', 'Cls');