Make too few args throw instead of log
[hiphop-php.git] / hphp / test / slow / variadic_args / cufa.php
blobcf56723244dc4e0638e4298000448aac237d4259
1 <?hh
3 function test_cufa($args) {
4 echo "\n", '********* ', __FUNCTION__, ' **********', "\n";
5 var_dump($args);
7 echo "\n", '========= functions ==========', "\n";
8 call_user_func_array('variadic_only_no_vv', $args);
9 call_user_func_array('variadic_only', $args);
10 try { call_user_func_array('variadic_some', $args); } catch (Exception $e) { var_dump($e->getMessage()); }
11 call_user_func_array('variadic_hack_only', $args);
12 try { call_user_func_array('variadic_hack_some', $args); } catch (Exception $e) { var_dump($e->getMessage()); }
13 echo "\n", '========= static methods ==========', "\n";
14 call_user_func_array(['C', 'st_variadic_only'], $args);
15 try { call_user_func_array(['C', 'st_variadic_some'], $args); } catch (Exception $e) { var_dump($e->getMessage()); }
16 call_user_func_array(['C', 'st_variadic_hack_only'], $args);
17 try { call_user_func_array(['C', 'st_variadic_hack_some'], $args); } catch (Exception $e) { var_dump($e->getMessage()); }
18 echo "\n", '========= instance methods ==========', "\n";
19 $inst = new C();
20 call_user_func_array([$inst, 'variadic_only'], $args);
21 try { call_user_func_array([$inst, 'variadic_some'], $args); } catch (Exception $e) { var_dump($e->getMessage()); }
22 call_user_func_array([$inst, 'variadic_hack_only'], $args);
23 try { call_user_func_array([$inst, 'variadic_hack_some'], $args); } catch (Exception $e) { var_dump($e->getMessage()); }
26 function test_cuf() {
27 echo "\n", '********* ', __FUNCTION__, ' **********', "\n";
28 call_user_func('variadic_only_no_vv', 'a', 'b', 'c');
29 call_user_func('variadic_only', 'a', 'b', 'c');
30 call_user_func('variadic_some', 'a', 'b', 'c');
31 call_user_func('variadic_hack_only', 'a', 'b', 'c');
32 call_user_func('variadic_hack_some', 'a', 'b', 'c');
33 echo "\n", '========= static methods ==========', "\n";
34 call_user_func(['C', 'st_variadic_only'], 'a', 'b', 'c');
35 call_user_func(['C', 'st_variadic_some'], 'a', 'b', 'c');
36 call_user_func(['C', 'st_variadic_hack_only'], 'a', 'b', 'c');
37 call_user_func(['C', 'st_variadic_hack_some'], 'a', 'b', 'c');
38 echo "\n", '========= instance methods ==========', "\n";
39 $inst = new C();
40 call_user_func([$inst, 'variadic_only'], 'a', 'b', 'c');
41 call_user_func([$inst, 'variadic_some'], 'a', 'b', 'c');
42 call_user_func([$inst, 'variadic_hack_only'], 'a', 'b', 'c');
43 call_user_func([$inst, 'variadic_hack_some'], 'a', 'b', 'c');
46 function test_cuf_insuffient_calls() {
47 echo "\n", '********* ', __FUNCTION__, ' **********', "\n";
48 call_user_func('variadic_only_no_vv');
49 call_user_func('variadic_only');
50 try { call_user_func('variadic_some'); } catch (Exception $e) { var_dump($e->getMessage()); }
51 call_user_func('variadic_hack_only');
52 try { call_user_func('variadic_hack_some'); } catch (Exception $e) { var_dump($e->getMessage()); }
53 echo "\n", '========= static methods ==========', "\n";
54 call_user_func(['C', 'st_variadic_only']);
55 try { call_user_func(['C', 'st_variadic_some']); } catch (Exception $e) { var_dump($e->getMessage()); }
56 call_user_func(['C', 'st_variadic_hack_only']);
57 try { call_user_func(['C', 'st_variadic_hack_some']); } catch (Exception $e) { var_dump($e->getMessage()); }
58 echo "\n", '========= instance methods ==========', "\n";
59 $inst = new C();
60 call_user_func([$inst, 'variadic_only']);
61 try { call_user_func([$inst, 'variadic_some']); } catch (Exception $e) { var_dump($e->getMessage()); }
62 call_user_func([$inst, 'variadic_hack_only']);
63 try { call_user_func([$inst, 'variadic_hack_some']); } catch (Exception $e) { var_dump($e->getMessage()); }
66 function test_stack_should_not_overflow(...$args) {
67 echo "\n", '********* ', __FUNCTION__, ' **********', "\n";
68 var_dump(is_array($args));
69 var_dump(count($args));
72 function main() {
73 test_cuf();
74 test_cuf_insuffient_calls();
76 test_cufa(array('a', 'b', 'c'));
77 test_cufa(array('a'));
78 test_cufa(array());
80 call_user_func_array('test_stack_should_not_overflow', range(0, 10000));
81 call_user_func_array('test_stack_should_not_overflow', range(0, 30000));
85 <<__EntryPoint>>
86 function main_cufa() {
87 error_reporting(-1);
88 require_once __DIR__.'/variadic_funcs.inc';
89 main();