diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 54f09420f48..9285950720d 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Sun Jan 1 17:47:27 2012 */ +/* Generated by re2c 0.13.5 on Tue Jan 17 11:54:12 2012 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -4490,11 +4490,11 @@ yy365: if (CG(active_class_entry) && (ZEND_ACC_TRAIT == (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { - // This is a hack, we abuse IS_NULL to indicate an invalid value - // if __CLASS__ is encountered in a trait, however, we also not that we - // should fix it up when we copy the method into an actual class - zendlval->value.lval = ZEND_ACC_TRAIT; - zendlval->type = IS_NULL; + /* We create a special __CLASS__ constant that is going to be resolved + at run-time */ + zendlval->value.str.len = sizeof("__CLASS__")-1; + zendlval->value.str.val = estrndup("__CLASS__", zendlval->value.str.len); + zendlval->type = IS_CONSTANT; } else { if (CG(active_class_entry)) { class_name = CG(active_class_entry)->name; diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index fc234e494c8..a4defa3d23d 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Tue Sep 13 17:29:49 2011 */ +/* Generated by re2c 0.13.5 on Tue Jan 17 11:54:12 2012 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE {