RE: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend_compile.c

From: Date: Tue, 19 Dec 2006 05:41:04 +0000
Subject: RE: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend_compile.c
References: 1  Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-5480@lists.php.net to get a copy of this message
It's probably more consistent. Very few places check outside the parser and it's usually in cases which are just hard to implement in the rules. I haven't tested but I could guess this test doesn't do well with something like (2+2) instanceof foo (not IS_CONST). Andi > -----Original Message----- > From: Sara Golemon [mailto:pollita@php.net] > Sent: Monday, December 18, 2006 9:35 PM > To: andi@zend.com > Cc: zend-engine-cvs@lists.php.net > Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / > zend_compile.c > > The primary reason I went this route rather than handling it > in the parser (I did consider it), was so that a clearer > error message could be given than "Unexpected T_STRING". If > you'd rather, I'd be happy to move this fix over there... > > -Sara > > > > > Not sure this is the right fix. It probably makes more sense to fix > > the parser itself and use r_variable instead of expr for > the instanceof rule. > > Did you try and have problems doing so? I just took a quick > look so it > > might be a bit more involved than that. > > > >> -----Original Message----- > >> From: Sara Golemon [mailto:pollita@php.net] > >> Sent: Tuesday, December 12, 2006 3:25 PM > >> To: zend-engine-cvs@lists.php.net > >> Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / > zend_compile.c > >> > >> pollita Tue Dec 12 23:25:23 2006 UTC > >> > >> Modified files: (Branch: PHP_5_2) > >> /ZendEngine2 zend_compile.c > >> Log: > >> MFH: Bugfix# 39435: 'foo' instanceof bar gives invalid > opcode error > >> > >> > >> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.c?r1=1. > > 647.2.27.2.21&r2=1.647.2.27.2.22&diff_format=u > >> Index: ZendEngine2/zend_compile.c > >> diff -u ZendEngine2/zend_compile.c:1.647.2.27.2.21 > >> ZendEngine2/zend_compile.c:1.647.2.27.2.22 > >> --- ZendEngine2/zend_compile.c:1.647.2.27.2.21 Tue Dec > >> 5 19:03:51 2006 > >> +++ ZendEngine2/zend_compile.c Tue Dec 12 23:25:23 2006 > >> @@ -17,7 +17,7 @@ > >> > >> +------------------------------------------------------------- > >> ---------+ > >> */ > >> > >> -/* $Id: zend_compile.c,v 1.647.2.27.2.21 2006/12/05 > 19:03:51 dmitry > >> Exp $ */ > >> +/* $Id: zend_compile.c,v 1.647.2.27.2.22 2006/12/12 > 23:25:23 pollita > >> +Exp $ */ > >> > >> #include <zend_language_parser.h> > >> #include "zend.h" > >> @@ -3627,6 +3627,10 @@ > >> } > >> } > >> > >> + if (expr->op_type == IS_CONST) { > >> + zend_error(E_COMPILE_ERROR, "instanceof expects > >> an object instance, constant given"); > >> + } > >> + > >> opline = get_next_op(CG(active_op_array) TSRMLS_CC); > >> opline->opcode = ZEND_INSTANCEOF; > >> opline->result.op_type = IS_TMP_VAR; > >> >

« previous php.zend-engine.cvs (#5480) next »