d7c2eac643
This is gone as of Zend 5.4: as far as I can tell, anything other than a positive integer literal is a parse error (including constants, "1 + 1", etc.) Let's get rid of it. The mere fact that this construct ever existed in any programming language is deeply horrifying. This lets us get rid of all the goofy code that subtracts 1 from the top value on the stack, does IterFree if needed, and jumps to the next level. Now, we can hardcode the necessary IterFrees and do a single jump, right where the break/continue actually is. The error message for using a non-integer expression is less helpful than Zend's (Zend says "non-constant operand not supported"; ours is "unexpected T_VARIABLE" or whatever). It wouldn't be that hard to do in our parser, if we think that's helpful. I don't think it matters, though.
36 linhas
1.5 KiB
C++
36 linhas
1.5 KiB
C++
/*
|
|
+----------------------------------------------------------------------+
|
|
| HipHop for PHP |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 2010-2013 Facebook, Inc. (http://www.facebook.com) |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 3.01 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| http://www.php.net/license/3_01.txt |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef incl_HPHP_CONTINUE_STATEMENT_H_
|
|
#define incl_HPHP_CONTINUE_STATEMENT_H_
|
|
|
|
#include "hphp/compiler/statement/break_statement.h"
|
|
|
|
namespace HPHP {
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
DECLARE_BOOST_TYPES(ContinueStatement);
|
|
|
|
class ContinueStatement : public BreakStatement {
|
|
public:
|
|
ContinueStatement(STATEMENT_CONSTRUCTOR_PARAMETERS, uint64_t depth);
|
|
virtual StatementPtr clone();
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
}
|
|
#endif // incl_HPHP_CONTINUE_STATEMENT_H_
|