Commit graph

105 commits

Author SHA1 Message Date
Dmitry Stogov
d1585a9e3f Revert "Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig."
This reverts commit 0d6da03f5c.
2018-03-14 01:08:03 +03:00
Dmitry Stogov
0d6da03f5c Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig. 2018-03-13 18:42:09 +03:00
Gabriel Caruso
ded3d984c6 Use EXPECT instead of EXPECTF when possible
EXPECTF logic in run-tests.php is considerable, so let's avoid it.
2018-02-20 21:53:48 +01:00
Gabriel Caruso
ce1d69a1f6 Use int instead of integer in type errors
PHP requires integer typehints to be written "int" and does not
allow "integer" as an alias. This changes type error messages to
match the actual type name and avoids confusing messages like
"must be of the type integer, integer given".
2018-02-04 19:08:23 +01:00
Márcio Almada
c08b3922dd adds missing tokens to list of semi-reserved words and regenerates test suite 2015-09-04 15:02:50 +02:00
Nikita Popov
a49ce7bb91 Don't return T_ERROR from token_get_all()
This turned out to be rather inconvenient after all. Instead just
return the same output we did on PHP 5. If people want to have an
error, use TOKEN_PARSE.
2015-07-09 23:02:21 +02:00
Nikita Popov
d91aad5966 Fix bug #69430
Don't throw from token_get_all() unless TOKEN_PARSE is used. Errors
are reported as T_ERROR tokens.
2015-07-09 19:11:48 +02:00
Aaron Piotrowski
110e0a5a2c Merge branch 'master' into throwable-interface
# Conflicts:
#	Zend/zend_language_scanner.c
#	Zend/zend_language_scanner.l
#	ext/simplexml/tests/SimpleXMLElement_xpath.phpt
2015-06-14 18:53:11 -05:00
Bob Weinand
31f3eeb0c5 Fix tokenizer test due to recent changes 2015-05-26 00:17:27 +02:00
Aaron Piotrowski
64b167d201 Updated tests to reflect exception class changes. 2015-05-16 16:49:14 -05:00
Márcio Almada
c2f3091b98 add missing SKIPIF section on test 2015-04-30 03:03:29 -03:00
Márcio Almada
110759386e ext tokenizer port + cleanup unused lexer states
we basically added a mechanism to store the token stream during parsing
and exposed the entire parser stack on the tokenizer extension through
an opt in flag: token_get_all($src, TOKEN_PARSE).

this change allows easy future language enhancements regarding context
aware parsing & scanning without further maintance on the tokenizer
extension while solves known inconsistencies "parseless" tokenizer
extension has when it handles `__halt_compiler()` presence.
2015-04-30 03:03:29 -03:00
Nikita Popov
a8bf1c5d8f Throw ParseException from lexer
Primarily to avoid getting fatal errors from token_get_all().

Implemented using a magic E_ERROR token, which the lexer emits to
force a parser failure.
2015-04-02 16:31:17 +02:00
Andrea Faulds
e5eb9530ab Use "float" and "integer" in typehint and zpp errors 2014-12-21 13:23:02 +00:00
Andrea Faulds
01554bf3e4 Merge branch 'master' into zppFailOnOverflow 2014-11-29 01:45:54 +00:00
Andrea Faulds
ebaa42302a Skip buncha tests on 32-bit 2014-11-29 01:05:19 +00:00
Anatol Belski
9a91e5019d fix test 2014-11-20 14:37:17 +01:00
Veres Lajos
4b9535341a typo fixes - https://github.com/vlajos/misspell_fixer 2014-11-19 20:23:00 +00:00
Nikita Popov
e7f252652f Fix tokenizer test to not depend on specific token numbers 2014-08-26 23:36:53 +02:00
Ferenc Kovacs
016b1f089e Fix bug #67392: token_name() does not return name for T_POW and T_POW_EQUAL token 2014-06-07 15:27:54 +02:00
Lior Kaplan
23d952ed60 Merge branch 'PHP-5.5' into PHP-5.6 2014-02-14 17:15:35 +02:00
Lior Kaplan
c09bd9def0 Merge branch 'PHP-5.4' into PHP-5.5 2014-02-14 15:30:00 +02:00
Veres Lajos
35101e9ef4 a few typofixes 2014-02-14 14:51:10 +02:00
datibbaw
aff56f3c45 add T_POW (**) operator
Fixed recognition of the operator

Added opcode, still doing multiply instead of pow()

opcode now always returns int(42)

The right answer, but always a float

Yanked code from pow() implementation.

Should not handle negative long as exponent ourselves

Added test cases from pow()

Moved precedence higher than '~'

Added GMP operator overloading

Added ZEND_ASSIGN_POW (**=) operator.

Added pow() as a language construct.

Adjusted test cases for changed precedence.

Reduced pow() to shell function around ZEND_API pow_function()

Reduced test case to only contain edge cases
Added overloading test case

Moved unary minus above T_POW

Revert "Added pow() as a language construct."

Bad bad bad idea.

This reverts commit f60b98cf7a8371233d800a6faa286ddba4432d02.

Reverted unary minus behaviour due to previous revert.
Convert arrays to int(0)
Exponent with array as a base becomes int(0)

Rebase against master

Fixed tokenizer test case
2014-02-06 14:41:21 +01:00
Xinchen Hui
4e84f72554 Fix test failed due to new Token T_YIELD 2012-09-02 13:15:23 +08:00
Nikita Popov
1823b16fa1 Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
Merging master to fix Windows build

Conflicts:
	Zend/zend_language_scanner.c
	Zend/zend_language_scanner_defs.h
	Zend/zend_vm_def.h
2012-08-20 13:37:53 +02:00
Stanislav Malyshev
3336e1e78c Merge branch 'pull-request/31'
* pull-request/31:
  Fix lexing of nested heredoc strings in token_get_all()
2012-08-19 21:43:04 -07:00
Nikita Popov
99f93dd9a8 Add T_YIELD in tokenizer_data.c
Also had to fix up some tokenizer tests that were affected by the token
number changes.
2012-07-22 20:32:56 +02:00
Nikita Popov
4cf90e06c9 Fix lexing of nested heredoc strings in token_get_all()
This fixes bug #60097.

Before two global variables CG(heredoc) and CG(heredoc_len) were used to
track the current heredoc label. In order to support nested heredoc
strings the *previous* heredoc label was assigned as the token value of
T_START_HEREDOC and the language_parser.y assigned that to CG(heredoc).

This created a dependency of the lexer on the parser. Thus the
token_get_all() function, which accesses the lexer directly without
also running the parser, was not able to tokenize nested heredoc strings
(and leaked memory). Same applies for the source-code highlighting
functions.

The new approach is to maintain a heredoc_label_stack in the lexer, which
contains all active heredoc labels.

As it is no longer required, T_START_HEREDOC and T_END_HEREDOC now don't
carry a token value anymore.

In order to make the work with zend_ptr_stack in this context more
convenient I added a new function zend_ptr_stack_top(), which retrieves the
top element of the stack (similar to zend_stack_top()).
2012-03-31 21:53:30 +02:00
Stanislav Malyshev
5063a77128 Fixed bug #54084 (token_get_all with regards to __halt_compiler is not binary safe) 2011-11-08 04:59:17 +00:00
Stanislav Malyshev
0d591e599f Fixed bug #54084 (token_get_all with regards to __halt_compiler is not binary safe) 2011-11-08 04:59:17 +00:00
Stefan Marr
0158804a15 Added __TRAIT__ magic constant [TRAITS] [DOC]
# __TRAIT__ behaves like __CLASS__ more or less but is constraint to traits.
# Since traits are not types, there are not many valid use cases, and trying
# to use __TRAIT__ to make traits more like classes is discouraged.
2011-07-31 17:39:30 +00:00
Stefan Marr
dbc6849bca Added __TRAIT__ magic constant [TRAITS] [DOC]
# __TRAIT__ behaves like __CLASS__ more or less but is constraint to traits.
# Since traits are not types, there are not many valid use cases, and trying
# to use __TRAIT__ to make traits more like classes is discouraged.
2011-07-31 17:39:30 +00:00
Stefan Marr
7e5a214251 Added: SKIP when tokenizer extension is not available 2011-07-31 16:35:09 +00:00
Stefan Marr
03f514d0a0 Added: SKIP when tokenizer extension is not available 2011-07-31 16:35:09 +00:00
Ilia Alshanetsky
1d984a7ffd Fixed bug #54089 (token_get_all() does not stop after __halt_compiler). 2011-02-28 15:18:27 +00:00
Ilia Alshanetsky
847f519d41 Fixed tests 2010-05-24 18:52:36 +00:00
Ilia Alshanetsky
6ce4737d94 Fixed tests 2010-05-20 22:53:38 +00:00
Felipe Pena
78f43a53f7 - Fixed tests 2010-04-26 14:15:44 +00:00
Felipe Pena
b3ded59e3e - Added T_GOTO
- Fixed tests
2008-03-30 21:48:24 +00:00
Steve Seear
4c2b3336a2 Adding tokenizer test 2008-03-19 17:43:50 +00:00
Marcus Boerger
af316021e8 - Rewrite scanner to be based on re2c instead of flex
The full patch is available as:
  http://php.net/~helly/php-re2c-5.3-20080316.diff.txt
  This is against php-re2c repository version 98
  An older patch against version 97 is available under:
  http://php.net/~helly/php-re2c-97-20080316.diff.txt
2008-03-16 21:06:55 +00:00
Hannes Magnusson
70b10b2b39 Fix test 2007-12-16 19:17:54 +00:00
Raghubansh Kumar
035dc8bdf6 New testcases for token_get_all() function 2007-12-14 16:21:33 +00:00
Dmitry Stogov
80d2409fd8 Improved compilation of heredocs and interpolated strings. (Matt, Dmitry) 2007-05-18 13:12:05 +00:00
Antony Dovgal
3aaf8bbdb7 fix test 2007-04-10 10:49:16 +00:00
Johannes Schlüter
8591b20d4e - MFH: Added linenumbers to array returned by token_get_all() 2007-04-08 00:18:38 +00:00
Ilia Alshanetsky
09dec62672 Fixed tokenizer tests 2006-04-20 01:06:58 +00:00
Derick Rethans
0839cadef6 - Fixed broken test case. 2006-01-04 10:31:58 +00:00
Antony Dovgal
c92ae847c7 add missing skipif conditions
fix existing ones
2005-12-21 11:42:06 +00:00