ZEND_ARG_INFO(0, code)
ZEND_END_ARG_INFO()
-ZEND_BEGIN_ARG_INFO_EX(arginfo_get_defined_functions, 0, 0, 0)
- ZEND_ARG_INFO(0, disabled)
-ZEND_END_ARG_INFO()
-
ZEND_BEGIN_ARG_INFO_EX(arginfo_get_resource_type, 0, 0, 1)
ZEND_ARG_INFO(0, res)
ZEND_END_ARG_INFO()
ZEND_FE(get_declared_classes, arginfo_zend__void)
ZEND_FE(get_declared_traits, arginfo_zend__void)
ZEND_FE(get_declared_interfaces, arginfo_zend__void)
- ZEND_FE(get_defined_functions, arginfo_get_defined_functions)
+ ZEND_FE(get_defined_functions, arginfo_zend__void)
ZEND_FE(get_defined_vars, arginfo_zend__void)
ZEND_FE(create_function, arginfo_create_function)
ZEND_FE(get_resource_type, arginfo_get_resource_type)
static int copy_function_name(zval *zv, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */
{
zend_function *func = Z_PTR_P(zv);
- zval *internal_ar = va_arg(args, zval *),
- *user_ar = va_arg(args, zval *);
- zend_bool *disabled = va_arg(args, zend_bool*);
+ zval *internal_ar = va_arg(args, zval *),
+ *user_ar = va_arg(args, zval *);
if (hash_key->key == NULL || hash_key->key->val[0] == 0) {
return 0;
}
if (func->type == ZEND_INTERNAL_FUNCTION) {
- zend_internal_function *intern = (zend_internal_function*) func;
- if ((*disabled) || intern->handler != ZEND_FN(display_disabled_function)) {
- add_next_index_str(internal_ar, zend_string_copy(hash_key->key));
- }
+ add_next_index_str(internal_ar, zend_string_copy(hash_key->key));
} else if (func->type == ZEND_USER_FUNCTION) {
add_next_index_str(user_ar, zend_string_copy(hash_key->key));
}
}
/* }}} */
-/* {{{ proto array get_defined_functions(bool disabled = false)
+/* {{{ proto array get_defined_functions(void)
Returns an array of all defined functions */
ZEND_FUNCTION(get_defined_functions)
{
zval internal, user;
- zend_bool disabled = 0;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "|b", &disabled) == FAILURE) {
+ if (zend_parse_parameters_none() == FAILURE) {
return;
}
array_init(&user);
array_init(return_value);
- zend_hash_apply_with_arguments(EG(function_table), copy_function_name, 3, &internal, &user, &disabled);
+ zend_hash_apply_with_arguments(EG(function_table), copy_function_name, 2, &internal, &user);
zend_hash_str_add_new(Z_ARRVAL_P(return_value), "internal", sizeof("internal")-1, &internal);
zend_hash_str_add_new(Z_ARRVAL_P(return_value), "user", sizeof("user")-1, &user);
name = zend_prefix_with_ns(name);
zend_string_release(lcname);
- lcname = zend_string_alloc(name->len, 0);
- zend_str_tolower_copy(lcname->val, name->val, name->len);
+ lcname = zend_string_tolower(name);
} else {
zend_string_addref(name);
}
"because the name is already in use", name->val);
}
- name = zend_new_interned_string(name TSRMLS_CC);
- lcname = zend_new_interned_string(lcname TSRMLS_CC);
+ name = zend_new_interned_string(name);
+ lcname = zend_new_interned_string(lcname);
ce->type = ZEND_USER_CLASS;
ce->name = name;
- zend_initialize_class_data(ce, 1 TSRMLS_CC);
+ zend_initialize_class_data(ce, 1);
ce->ce_flags |= decl->flags;
- ce->info.user.filename = zend_get_compiled_filename(TSRMLS_C);
+ ce->info.user.filename = zend_get_compiled_filename();
ce->info.user.line_start = decl->start_lineno;
ce->info.user.line_end = decl->end_lineno;
if (decl->doc_comment) {
}
if (extends_ast) {
- if (ce->ce_flags & ZEND_ACC_TRAIT) {
- zend_error_noreturn(E_COMPILE_ERROR, "A trait (%s) cannot extend a class. "
- "Traits can only be composed from other traits with the 'use' keyword. Error",
- name->val);
- }
-
if (!zend_is_const_default_class_ref(extends_ast)) {
zend_string *extends_name = zend_ast_get_str(extends_ast);
zend_error_noreturn(E_COMPILE_ERROR,
zend_compile_class_ref(&extends_node, extends_ast, 0);
}
- opline = get_next_op(CG(active_op_array) TSRMLS_CC);
- zend_make_var_result(&declare_node, opline TSRMLS_CC);
+ opline = get_next_op(CG(active_op_array));
+ zend_make_var_result(&declare_node, opline);
// TODO.AST drop this
GET_NODE(&FC(implementing_class), opline->result);
}
{
- zend_string *key = zend_build_runtime_definition_key(lcname, decl->lex_pos TSRMLS_CC);
+ zend_string *key = zend_build_runtime_definition_key(lcname, decl->lex_pos);
opline->op1_type = IS_CONST;
LITERAL_STR(opline->op1, key);
CG(active_class_entry) = ce;
if (implements_ast) {
- zend_compile_implements(&declare_node, implements_ast TSRMLS_CC);
+ zend_compile_implements(&declare_node, implements_ast);
}
- zend_compile_stmt(stmt_ast TSRMLS_CC);
+ zend_compile_stmt(stmt_ast);
if (ce->num_traits == 0) {
/* For traits this check is delayed until after trait binding */
zend_error_noreturn(E_COMPILE_ERROR, "Constructor %s::%s() cannot be static",
ce->name->val, ce->constructor->common.function_name->val);
}
+ if (ce->constructor->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
+ zend_error_noreturn(E_COMPILE_ERROR,
+ "Constructor %s::%s() cannot declare a return type",
+ ce->name->val, ce->constructor->common.function_name->val);
+ }
}
if (ce->destructor) {
ce->destructor->common.fn_flags |= ZEND_ACC_DTOR;
if (ce->destructor->common.fn_flags & ZEND_ACC_STATIC) {
zend_error_noreturn(E_COMPILE_ERROR, "Destructor %s::%s() cannot be static",
ce->name->val, ce->destructor->common.function_name->val);
+ } else if (ce->destructor->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
+ zend_error_noreturn(E_COMPILE_ERROR,
+ "Destructor %s::%s() cannot declare a return type",
+ ce->name->val, ce->destructor->common.function_name->val);
}
}
if (ce->clone) {
if (ce->clone->common.fn_flags & ZEND_ACC_STATIC) {
zend_error_noreturn(E_COMPILE_ERROR, "Clone method %s::%s() cannot be static",
ce->name->val, ce->clone->common.function_name->val);
+ } else if (ce->clone->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
+ zend_error_noreturn(E_COMPILE_ERROR,
+ "%s::%s() cannot declare a return type",
+ ce->name->val, ce->clone->common.function_name->val);
}
}
ce->num_traits = 0;
ce->ce_flags |= ZEND_ACC_IMPLEMENT_TRAITS;
- zend_emit_op(NULL, ZEND_BIND_TRAITS, &declare_node, NULL TSRMLS_CC);
+ zend_emit_op(NULL, ZEND_BIND_TRAITS, &declare_node, NULL);
}
if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))
&& (extends_ast || ce->num_interfaces > 0)
) {
- zend_verify_abstract_class(ce TSRMLS_CC);
+ zend_verify_abstract_class(ce);
if (ce->num_interfaces && !(ce->ce_flags & ZEND_ACC_IMPLEMENT_TRAITS)) {
- zend_emit_op(NULL, ZEND_VERIFY_ABSTRACT_CLASS, &declare_node, NULL TSRMLS_CC);
+ zend_emit_op(NULL, ZEND_VERIFY_ABSTRACT_CLASS, &declare_node, NULL);
}
}