diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | Zend/zend_language_scanner.l | 2 | ||||
-rw-r--r-- | ext/tokenizer/tests/bug80462.phpt | 22 |
3 files changed, 27 insertions, 1 deletions
@@ -47,6 +47,10 @@ PHP NEWS - Tidy: . Fixed bug #77594 (ob_tidyhandler is never reset). (cmb) +- Tokenizer: + . Fixed bug #80462 (Nullsafe operator tokenize with TOKEN_PARSE flag fails). + (Nikita) + - XML: . XmlParser opaque object renamed to XMLParser for consistency with other XML objects. (girgias) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index d1c5b85cf2..b9e6127059 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1564,7 +1564,7 @@ NEWLINE ("\r"|"\n"|"\r\n") <ST_IN_SCRIPTING>"?->" { yy_push_state(ST_LOOKING_FOR_PROPERTY); - return T_NULLSAFE_OBJECT_OPERATOR; + RETURN_TOKEN(T_NULLSAFE_OBJECT_OPERATOR); } <ST_IN_SCRIPTING,ST_LOOKING_FOR_PROPERTY>{WHITESPACE}+ { diff --git a/ext/tokenizer/tests/bug80462.phpt b/ext/tokenizer/tests/bug80462.phpt new file mode 100644 index 0000000000..068cea0833 --- /dev/null +++ b/ext/tokenizer/tests/bug80462.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #80462: Nullsafe operator tokenize with TOKEN_PARSE flag fails +--FILE-- +<?php + +foreach (PhpToken::tokenize('<?php $foo = $a?->b();', TOKEN_PARSE) as $token) { + echo $token->getTokenName(), "\n"; +} + +?> +--EXPECT-- +T_OPEN_TAG +T_VARIABLE +T_WHITESPACE += +T_WHITESPACE +T_VARIABLE +T_NULLSAFE_OBJECT_OPERATOR +T_STRING +( +) +; |