ce->__tostring = fe;
} else if (zend_string_equals_literal(mname, ZEND_DEBUGINFO_FUNC_NAME)) {
ce->__debugInfo = fe;
- fe->common.fn_flags |= ZEND_ACC_CTOR;
+ } else if (ZSTR_LEN(ce->name) == ZSTR_LEN(mname)) {
+ zend_string *lowercase_name = zend_string_tolower(ce->name);
+ lowercase_name = zend_new_interned_string(lowercase_name);
+ if (!memcmp(ZSTR_VAL(mname), ZSTR_VAL(lowercase_name), ZSTR_LEN(mname))) {
+ if (ce->constructor && (!ce->parent || ce->constructor != ce->parent->constructor)) {
+ zend_error_noreturn(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ZSTR_VAL(ce->name));
+ }
+ ce->constructor = fe;
+ }
+ zend_string_release_ex(lowercase_name, 0);
}
}
/* }}} */