Skip to content

Commit d235654

Browse files
committed
Fix arginfo for built-in engine functions
1 parent 5314f13 commit d235654

File tree

2 files changed

+285
-70
lines changed

2 files changed

+285
-70
lines changed

Zend/zend_builtin_functions.c

Lines changed: 211 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -102,148 +102,289 @@ static ZEND_FUNCTION(gc_disable);
102102
ZEND_BEGIN_ARG_INFO(arginfo_zend__void, 0)
103103
ZEND_END_ARG_INFO()
104104

105+
/* string zend_version(void) */
106+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_version, 0, 0, IS_STRING, 0, 0)
107+
ZEND_END_ARG_INFO()
108+
109+
/* int gc_collect_cycles(void) */
110+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gc_collect_cycles, 0, 0, IS_LONG, 0, 0)
111+
ZEND_END_ARG_INFO()
112+
113+
/* void gc_enabled(void) */
114+
ZEND_BEGIN_ARG_INFO_EX(arginfo_gc_enabled, 0, 0, 0)
115+
ZEND_END_ARG_INFO()
116+
117+
/* void gc_enable(void) */
118+
ZEND_BEGIN_ARG_INFO_EX(arginfo_gc_enable, 0, 0, 0)
119+
ZEND_END_ARG_INFO()
120+
121+
/* void gc_disable(void) */
122+
ZEND_BEGIN_ARG_INFO_EX(arginfo_gc_disable, 0, 0, 0)
123+
ZEND_END_ARG_INFO()
124+
125+
/* int func_num_args(void) */
126+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_func_num_args, 0, 0, IS_LONG, 0, 0)
127+
ZEND_END_ARG_INFO()
128+
129+
/* mixed func_get_arg(int arg_num) */
105130
ZEND_BEGIN_ARG_INFO_EX(arginfo_func_get_arg, 0, 0, 1)
106-
ZEND_ARG_INFO(0, arg_num)
131+
ZEND_ARG_TYPE_INFO(0, arg_num, IS_LONG, 0)
107132
ZEND_END_ARG_INFO()
108133

109-
ZEND_BEGIN_ARG_INFO_EX(arginfo_strlen, 0, 0, 1)
110-
ZEND_ARG_INFO(0, str)
134+
/* array func_get_args() */
135+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_func_get_args, 0, 0, IS_ARRAY, 0, 0)
111136
ZEND_END_ARG_INFO()
112137

113-
ZEND_BEGIN_ARG_INFO_EX(arginfo_strcmp, 0, 0, 2)
114-
ZEND_ARG_INFO(0, str1)
115-
ZEND_ARG_INFO(0, str2)
138+
/* int strlen(string str) */
139+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strlen, 0, 1, IS_LONG, 0, 0)
140+
ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
116141
ZEND_END_ARG_INFO()
117142

118-
ZEND_BEGIN_ARG_INFO_EX(arginfo_strncmp, 0, 0, 3)
119-
ZEND_ARG_INFO(0, str1)
120-
ZEND_ARG_INFO(0, str2)
121-
ZEND_ARG_INFO(0, len)
143+
/* int strcmp(string str1, string str2) */
144+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strcmp, 0, 2, IS_LONG, 0, 0)
145+
ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
146+
ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
122147
ZEND_END_ARG_INFO()
123148

124-
ZEND_BEGIN_ARG_INFO_EX(arginfo_each, 0, 0, 1)
125-
ZEND_ARG_INFO(1, arr)
149+
/* int strncmp(string str1, string str2, int len) */
150+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strncmp, 0, 3, IS_LONG, 0, 0)
151+
ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
152+
ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
153+
ZEND_ARG_TYPE_INFO(0, len, IS_LONG, 0)
126154
ZEND_END_ARG_INFO()
127155

128-
ZEND_BEGIN_ARG_INFO_EX(arginfo_error_reporting, 0, 0, 0)
129-
ZEND_ARG_INFO(0, new_error_level)
156+
/* int strcasecmp(string str1, string str2) */
157+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strcasecmp, 0, 2, IS_LONG, 0, 0)
158+
ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
159+
ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
130160
ZEND_END_ARG_INFO()
131161

132-
ZEND_BEGIN_ARG_INFO_EX(arginfo_define, 0, 0, 3)
133-
ZEND_ARG_INFO(0, constant_name)
162+
/* int strncasecmp(string str1, string str2, int len) */
163+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strncasecmp, 0, 3, IS_LONG, 0, 0)
164+
ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
165+
ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
166+
ZEND_ARG_TYPE_INFO(0, len, IS_LONG, 0)
167+
ZEND_END_ARG_INFO()
168+
169+
/* array each(array arr) */
170+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_each, 0, 1, IS_ARRAY, 0, 0)
171+
ZEND_ARG_TYPE_INFO(0, arr, IS_ARRAY, 0)
172+
ZEND_END_ARG_INFO()
173+
174+
/* int error_reporting([int new_error_level]) */
175+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_error_reporting, 0, 0, IS_LONG, 0, 0)
176+
ZEND_ARG_TYPE_INFO(0, new_error_level, IS_LONG, 0)
177+
ZEND_END_ARG_INFO()
178+
179+
/* bool define(string constant_name, mixed value[, boolean case_insensitive=false]) */
180+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_define, 0, 2, _IS_BOOL, 0, 0)
181+
ZEND_ARG_TYPE_INFO(0, constant_name, IS_STRING, 0)
134182
ZEND_ARG_INFO(0, value)
135-
ZEND_ARG_INFO(0, case_insensitive)
183+
ZEND_ARG_TYPE_INFO(0, case_insensitive=false, _IS_BOOL, 0)
136184
ZEND_END_ARG_INFO()
137185

138-
ZEND_BEGIN_ARG_INFO_EX(arginfo_defined, 0, 0, 1)
139-
ZEND_ARG_INFO(0, constant_name)
186+
/* bool defined(string constant_name) */
187+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_defined, 0, 1, _IS_BOOL, 0, 0)
188+
ZEND_ARG_TYPE_INFO(0, constant_name, IS_STRING, 0)
140189
ZEND_END_ARG_INFO()
141190

142-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_class, 0, 0, 0)
191+
/* string get_class([object object]) */
192+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_class, 0, 0, IS_STRING, 0, 0)
143193
ZEND_ARG_INFO(0, object)
144194
ZEND_END_ARG_INFO()
145195

146-
ZEND_BEGIN_ARG_INFO_EX(arginfo_is_subclass_of, 0, 0, 2)
196+
/* string get_called_class() */
197+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_called_class, 0, 0, IS_STRING, 0, 0)
198+
ZEND_END_ARG_INFO()
199+
200+
/* string get_parent_class([mixed object]) */
201+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_parent_class, 0, 0, IS_STRING, 0, 0)
147202
ZEND_ARG_INFO(0, object)
148-
ZEND_ARG_INFO(0, class_name)
149-
ZEND_ARG_INFO(0, allow_string)
150203
ZEND_END_ARG_INFO()
151204

152-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_class_vars, 0, 0, 1)
153-
ZEND_ARG_INFO(0, class_name)
205+
/* bool is_subclass_of(mixed object_or_string, string class_name [, bool allow_string=true]) */
206+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_subclass_of, 0, 2, _IS_BOOL, 0, 0)
207+
ZEND_ARG_INFO(0, object_or_string)
208+
ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
209+
ZEND_ARG_TYPE_INFO(0, allow_string=true, _IS_BOOL, 0)
210+
ZEND_END_ARG_INFO()
211+
212+
/* bool is_a(mixed object_or_string, string class_name [, bool allow_string=false]) */
213+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_a, 0, 2, _IS_BOOL, 0, 0)
214+
ZEND_ARG_INFO(0, object_or_string)
215+
ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
216+
ZEND_ARG_TYPE_INFO(0, allow_string=false, _IS_BOOL, 0)
217+
ZEND_END_ARG_INFO()
218+
219+
/* array get_class_vars(string class_name) */
220+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_class_vars, 0, 1, IS_ARRAY, 0, 0)
221+
ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
154222
ZEND_END_ARG_INFO()
155223

156-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_object_vars, 0, 0, 1)
224+
/* array get_object_vars(object obj) */
225+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_object_vars, 0, 1, IS_ARRAY, 0, 0)
157226
ZEND_ARG_INFO(0, obj)
158227
ZEND_END_ARG_INFO()
159228

160-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_class_methods, 0, 0, 1)
229+
/* array get_class_methods(mixed class) */
230+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_class_methods, 0, 1, IS_ARRAY, 0, 0)
161231
ZEND_ARG_INFO(0, class)
162232
ZEND_END_ARG_INFO()
163233

164-
ZEND_BEGIN_ARG_INFO_EX(arginfo_method_exists, 0, 0, 2)
234+
/* bool method_exists(object object, string method) */
235+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_method_exists, 0, 2, _IS_BOOL, 0, 0)
165236
ZEND_ARG_INFO(0, object)
166-
ZEND_ARG_INFO(0, method)
237+
ZEND_ARG_TYPE_INFO(0, method, IS_STRING, 0)
167238
ZEND_END_ARG_INFO()
168239

169-
ZEND_BEGIN_ARG_INFO_EX(arginfo_property_exists, 0, 0, 2)
240+
/* bool property_exists(mixed object_or_class, string property_name) */
241+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_property_exists, 0, 2, _IS_BOOL, 0, 0)
170242
ZEND_ARG_INFO(0, object_or_class)
171-
ZEND_ARG_INFO(0, property_name)
243+
ZEND_ARG_TYPE_INFO(0, property_name, IS_STRING, 0)
172244
ZEND_END_ARG_INFO()
173245

174-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_exists, 0, 0, 1)
175-
ZEND_ARG_INFO(0, classname)
176-
ZEND_ARG_INFO(0, autoload)
246+
/* bool class_exists(string classname [, bool autoload]) */
247+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_exists, 0, 1, _IS_BOOL, 0, 0)
248+
ZEND_ARG_TYPE_INFO(0, classname, IS_STRING, 0)
249+
ZEND_ARG_TYPE_INFO(0, autoload, _IS_BOOL, 0)
177250
ZEND_END_ARG_INFO()
178251

179-
ZEND_BEGIN_ARG_INFO_EX(arginfo_trait_exists, 0, 0, 1)
180-
ZEND_ARG_INFO(0, traitname)
181-
ZEND_ARG_INFO(0, autoload)
252+
/* bool interface_exists(string classname [, bool autoload]) */
253+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_interface_exists, 0, 1, _IS_BOOL, 0, 0)
254+
ZEND_ARG_TYPE_INFO(0, classname, IS_STRING, 0)
255+
ZEND_ARG_TYPE_INFO(0, autoload, _IS_BOOL, 0)
182256
ZEND_END_ARG_INFO()
183257

184-
ZEND_BEGIN_ARG_INFO_EX(arginfo_function_exists, 0, 0, 1)
185-
ZEND_ARG_INFO(0, function_name)
258+
/* bool trait_exists(string traitname [, bool autoload]) */
259+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_trait_exists, 0, 1, _IS_BOOL, 0, 0)
260+
ZEND_ARG_TYPE_INFO(0, traitname, IS_STRING, 0)
261+
ZEND_ARG_TYPE_INFO(0, autoload, _IS_BOOL, 0)
186262
ZEND_END_ARG_INFO()
187263

188-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_alias, 0, 0, 2)
189-
ZEND_ARG_INFO(0, user_class_name)
190-
ZEND_ARG_INFO(0, alias_name)
191-
ZEND_ARG_INFO(0, autoload)
264+
/* bool function_exists(string function_name) */
265+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_function_exists, 0, 1, _IS_BOOL, 0, 0)
266+
ZEND_ARG_TYPE_INFO(0, function_name, IS_STRING, 0)
267+
ZEND_END_ARG_INFO()
268+
269+
/* bool class_alias(string user_class_name , string alias_name [, bool autoload]) */
270+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_alias, 0, 2, _IS_BOOL, 0, 0)
271+
ZEND_ARG_TYPE_INFO(0, user_class_name, IS_STRING, 0)
272+
ZEND_ARG_TYPE_INFO(0, alias_name, IS_STRING, 0)
273+
ZEND_ARG_TYPE_INFO(0, autoload, _IS_BOOL, 0)
192274
ZEND_END_ARG_INFO()
193275

194276
#if ZEND_DEBUG
277+
/* void leak([int num_bytes=3]) */
278+
ZEND_BEGIN_ARG_INFO_EX(arginfo_leak, 0, 0, 0)
279+
ZEND_ARG_TYPE_INFO(0, num_bytes=3, IS_LONG, 0)
280+
ZEND_END_ARG_INFO()
281+
282+
/* void leak_variable(mixed variable [, bool leak_data]) */
195283
ZEND_BEGIN_ARG_INFO_EX(arginfo_leak_variable, 0, 0, 1)
196284
ZEND_ARG_INFO(0, variable)
197-
ZEND_ARG_INFO(0, leak_data)
285+
ZEND_ARG_TYPE_INFO(0, leak_data, _IS_BOOL, 0)
286+
ZEND_END_ARG_INFO()
287+
288+
/* void crash(void) */
289+
ZEND_BEGIN_ARG_INFO_EX(arginfo_crash, 0, 0, 0)
198290
ZEND_END_ARG_INFO()
199291
#endif
200292

293+
/* array get_included_files(void) */
294+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_included_files, 0, 0, IS_ARRAY, 0, 0)
295+
ZEND_END_ARG_INFO()
296+
297+
/* void trigger_error(string message [, int error_type]) */
201298
ZEND_BEGIN_ARG_INFO_EX(arginfo_trigger_error, 0, 0, 1)
202-
ZEND_ARG_INFO(0, message)
203-
ZEND_ARG_INFO(0, error_type)
299+
ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
300+
ZEND_ARG_TYPE_INFO(0, error_type, IS_LONG, 0)
301+
ZEND_END_ARG_INFO()
302+
303+
/* string set_error_handler(string error_handler [, int error_types]) */
304+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_error_handler, 0, 1, IS_STRING, 0, 0)
305+
ZEND_ARG_TYPE_INFO(0, error_handler, IS_STRING, 0)
306+
ZEND_ARG_TYPE_INFO(0, error_types, IS_LONG, 0)
307+
ZEND_END_ARG_INFO()
308+
309+
/* void restore_error_handler(void) */
310+
ZEND_BEGIN_ARG_INFO_EX(arginfo_restore_error_handler, 0, 0, 0)
204311
ZEND_END_ARG_INFO()
205312

206-
ZEND_BEGIN_ARG_INFO_EX(arginfo_set_error_handler, 0, 0, 1)
207-
ZEND_ARG_INFO(0, error_handler)
208-
ZEND_ARG_INFO(0, error_types)
313+
/* string set_exception_handler(callable exception_handler) */
314+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_exception_handler, 0, 1, IS_STRING, 0, 0)
315+
ZEND_ARG_TYPE_INFO(0, exception_handler, IS_CALLABLE, 0)
209316
ZEND_END_ARG_INFO()
210317

211-
ZEND_BEGIN_ARG_INFO_EX(arginfo_set_exception_handler, 0, 0, 1)
212-
ZEND_ARG_INFO(0, exception_handler)
318+
/* void restore_exception_handler(void) */
319+
ZEND_BEGIN_ARG_INFO_EX(arginfo_restore_exception_handler, 0, 0, 0)
213320
ZEND_END_ARG_INFO()
214321

215-
ZEND_BEGIN_ARG_INFO_EX(arginfo_create_function, 0, 0, 2)
216-
ZEND_ARG_INFO(0, args)
217-
ZEND_ARG_INFO(0, code)
322+
/* array get_declared_traits() */
323+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_declared_traits, 0, 0, IS_ARRAY, 0, 0)
218324
ZEND_END_ARG_INFO()
219325

220-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_resource_type, 0, 0, 1)
221-
ZEND_ARG_INFO(0, res)
326+
/* array get_declared_classes() */
327+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_declared_classes, 0, 0, IS_ARRAY, 0, 0)
222328
ZEND_END_ARG_INFO()
223329

224-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_resources, 0, 0, 0)
225-
ZEND_ARG_INFO(0, type)
330+
/* array get_declared_interfaces() */
331+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_declared_interfaces, 0, 0, IS_ARRAY, 0, 0)
226332
ZEND_END_ARG_INFO()
227333

228-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_loaded_extensions, 0, 0, 0)
229-
ZEND_ARG_INFO(0, zend_extensions)
334+
/* array get_defined_functions(void) */
335+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_defined_functions, 0, 0, IS_ARRAY, 0, 0)
230336
ZEND_END_ARG_INFO()
231337

232-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_defined_constants, 0, 0, 0)
233-
ZEND_ARG_INFO(0, categorize)
338+
/* array get_defined_vars(void) */
339+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_defined_vars, 0, 0, IS_ARRAY, 0, 0)
234340
ZEND_END_ARG_INFO()
235341

236-
ZEND_BEGIN_ARG_INFO_EX(arginfo_debug_backtrace, 0, 0, 0)
237-
ZEND_ARG_INFO(0, options)
238-
ZEND_ARG_INFO(0, limit)
342+
/* string create_function(string args, string code) */
343+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_create_function, 0, 2, IS_STRING, 0, 0)
344+
ZEND_ARG_TYPE_INFO(0, args, IS_STRING, 0)
345+
ZEND_ARG_TYPE_INFO(0, code, IS_STRING, 0)
239346
ZEND_END_ARG_INFO()
240347

348+
/* string get_resource_type(resource res) */
349+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_resource_type, 0, 1, IS_STRING, 0, 0)
350+
ZEND_ARG_TYPE_INFO(0, res, IS_RESOURCE, 0)
351+
ZEND_END_ARG_INFO()
352+
353+
/* array get_resources([string resouce_type]) */
354+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_resources, 0, 0, IS_ARRAY, 0, 0)
355+
ZEND_ARG_TYPE_INFO(0, resouce_type, IS_STRING, 0)
356+
ZEND_END_ARG_INFO()
357+
358+
/* array get_loaded_extensions([bool zend_extensions]) */
359+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_loaded_extensions, 0, 0, IS_ARRAY, 0, 0)
360+
ZEND_ARG_TYPE_INFO(0, zend_extensions, _IS_BOOL, 0)
361+
ZEND_END_ARG_INFO()
362+
363+
/* array get_defined_constants([bool categorize]) */
364+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_defined_constants, 0, 0, IS_ARRAY, 0, 0)
365+
ZEND_ARG_TYPE_INFO(0, categorize, _IS_BOOL, 0)
366+
ZEND_END_ARG_INFO()
367+
368+
/* void debug_print_backtrace([int options[, int limit]]) */
241369
ZEND_BEGIN_ARG_INFO_EX(arginfo_debug_print_backtrace, 0, 0, 0)
242-
ZEND_ARG_INFO(0, options)
370+
ZEND_ARG_TYPE_INFO(0, options, IS_LONG, 0)
371+
ZEND_ARG_TYPE_INFO(0, limit, IS_LONG, 0)
372+
ZEND_END_ARG_INFO()
373+
374+
/* array debug_backtrace([int options[, int limit]]) */
375+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_debug_backtrace, 0, 0, IS_ARRAY, 0, 0)
376+
ZEND_ARG_TYPE_INFO(0, options, IS_LONG, 0)
377+
ZEND_ARG_TYPE_INFO(0, limit, IS_LONG, 0)
378+
ZEND_END_ARG_INFO()
379+
380+
/* bool extension_loaded(string extension_name) */
381+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_extension_loaded, 0, 1, _IS_BOOL, 0, 0)
382+
ZEND_ARG_TYPE_INFO(0, extension_name, IS_STRING, 0)
243383
ZEND_END_ARG_INFO()
244384

245-
ZEND_BEGIN_ARG_INFO_EX(arginfo_extension_loaded, 0, 0, 1)
246-
ZEND_ARG_INFO(0, extension_name)
385+
/* array get_extension_funcs(string extension_name) */
386+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_extension_funcs, 0, 1, IS_ARRAY, 0, 0)
387+
ZEND_ARG_TYPE_INFO(0, extension_name, IS_STRING, 0)
247388
ZEND_END_ARG_INFO()
248389

249390
#ifdef ZEND_DEBUG
@@ -775,7 +916,7 @@ static void copy_constant_array(zval *dst, zval *src) /* {{{ */
775916
}
776917
/* }}} */
777918

778-
/* {{{ proto bool define(string constant_name, mixed value, boolean case_insensitive=false)
919+
/* {{{ proto bool define(string constant_name, mixed value[, boolean case_insensitive=false])
779920
Define a new constant */
780921
ZEND_FUNCTION(define)
781922
{
@@ -1566,7 +1707,7 @@ ZEND_FUNCTION(class_alias)
15661707
/* }}} */
15671708

15681709
#if ZEND_DEBUG
1569-
/* {{{ proto void leak(int num_bytes=3)
1710+
/* {{{ proto void leak([int num_bytes=3])
15701711
Cause an intentional memory leak, for testing/debugging purposes */
15711712
ZEND_FUNCTION(leak)
15721713
{

0 commit comments

Comments
 (0)