]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorJulien Pauli <jpauli@php.net>
Fri, 12 Dec 2014 14:07:33 +0000 (15:07 +0100)
committerJulien Pauli <jpauli@php.net>
Fri, 12 Dec 2014 15:11:26 +0000 (16:11 +0100)
* PHP-5.5:
  Updated NEWS
  Fixed Bug #65576 (Constructor from trait conflicts with inherited constructor)

Conflicts:
Zend/zend_compile.c

1  2 
Zend/zend_compile.c

index 03149091fb1f1135d9c00e5010d042e25d13dae7,17170acc69489e4ecd4707c869b09b96eeacbfb8..c7efa47cdb2ba328f0d452f04912f91f9dfe561b
@@@ -3979,8 -3842,8 +3979,8 @@@ static void zend_add_magic_methods(zend
        if (!strncmp(mname, ZEND_CLONE_FUNC_NAME, mname_len)) {
                ce->clone = fe; fe->common.fn_flags |= ZEND_ACC_CLONE;
        } else if (!strncmp(mname, ZEND_CONSTRUCTOR_FUNC_NAME, mname_len)) {
-               if (ce->constructor) {
+               if (ce->constructor && (!ce->parent || ce->constructor != ce->parent->constructor)) {
 -                      zend_error(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name);
 +                      zend_error_noreturn(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name);
                }
                ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR;
        } else if (!strncmp(mname, ZEND_DESTRUCTOR_FUNC_NAME,  mname_len)) {
                zend_str_tolower_copy(lowercase_name, ce->name, ce->name_length);
                lowercase_name = (char*)zend_new_interned_string(lowercase_name, ce->name_length + 1, 1 TSRMLS_CC);
                if (!memcmp(mname, lowercase_name, mname_len)) {
-                       if (ce->constructor) {
+                       if (ce->constructor && (!ce->parent || ce->constructor != ce->parent->constructor)) {
 -                              zend_error(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name);
 +                              zend_error_noreturn(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name);
                        }
                        ce->constructor = fe;
                        fe->common.fn_flags |= ZEND_ACC_CTOR;