Nikita Popov
23d9c17770
Add support for nullsafe operator
2020-08-09 12:08:05 +02:00
Nikita Popov
31be7b4ed9
Update php-yacc, remove unused tokens
2020-08-08 19:22:28 +02:00
Nikita Popov
f6bf041583
Remove last uses of MockBuilder
2020-08-08 11:58:00 +02:00
Nikita Popov
1bf073a76c
Avoid most MockBuilder uses in NodeVisitor testing
...
This removes all the warnings about at() usage ... even though
it is still used. Apparently warnings don't get emitted if the
at() usage is inside a data provider?
2020-08-08 11:49:05 +02:00
Nikita Popov
1721ae155c
Avoid one use of MockBuilder
...
We can just use anon classes here and avoid PHPUnits unreliable
MockBuilder.
2020-08-08 11:49:05 +02:00
Alex
54fc023b25
Update Array_ annotations, items are nullable ( #696 )
...
When used to destructure, items are optional. E.g. `[$a, , $b] = [1, 2, 3];`.
2020-08-08 10:04:21 +02:00
Nikita Popov
f845568e1d
Remove an unnecessary use of at()
2020-08-07 10:19:39 +02:00
Nikita Popov
b4ca4ce0fe
Allow PHPUnit 9
2020-08-07 10:16:19 +02:00
Nikita Popov
303342630d
Fix a token reference
2020-08-01 22:36:49 +02:00
Nikita Popov
1a1300aa2a
Add reverse emulation support
2020-08-01 22:34:36 +02:00
Nikita Popov
3698f4b727
Add common KeywordEmulator
...
The logic for keyword emulation is always going to be the same.
2020-08-01 22:02:52 +02:00
Nikita Popov
7b2ec6703f
Accept a phpVersion option in emulative lexer
...
Testing this will require reverse emulation support.
2020-08-01 21:56:06 +02:00
Nikita Popov
61328f89da
Separate out emulator version info
2020-08-01 21:49:53 +02:00
Nikita Popov
21dce06dfb
Release PHP-Parser 4.7.0
2020-07-25 15:18:53 +02:00
Nikita Popov
acaf3fecad
Implement emulation of PHP 8 T_NAME_* tokens
...
Like comment emulation, this is unconditional, as it is required
for core functionality.
2020-07-23 12:28:13 +02:00
Nikita Popov
a63b495fe6
Migrate grammar to use PHP 8 T_NAME_* tokens
...
This will break everything on PHP < 8.
2020-07-23 12:01:50 +02:00
Nikita Popov
2d1998938c
[PHP 8.0] Support trailing comma in closure use list
...
RFC: https://wiki.php.net/rfc/trailing_comma_in_closure_use_list
2020-07-22 18:43:55 +02:00
Nikita Popov
739b4b4c60
Fix handling of unterminated comment with trailing newline
...
Fixes #688 .
2020-07-22 18:35:55 +02:00
Nikita Popov
17f478107a
Fix file name
2020-07-22 18:30:00 +02:00
Graham Campbell
cd7c058e76
Added missing entry to change log and correct next version indicator ( #685 )
...
* Added missing entry to change log and correct next version indicator
* Update composer.json
2020-07-19 18:36:23 +02:00
Mikaël Mayer
d8b19d7963
Fixed rebuildParsers.php ( #686 )
...
phpyacc is a sh file and should not be run via the php interpreter, but directly.
2020-07-16 21:51:43 +02:00
Tomas Votruba
69c5d48afd
[PHP 8.0] Add match expressions ( #672 )
...
RFC: https://wiki.php.net/rfc/match_expression_v2
Upstream implementation: php/php-src#5371
Closes #671 .
2020-07-15 21:40:05 +02:00
Graham Campbell
6ec527bce7
Corrected license text
2020-07-13 22:32:20 +02:00
Graham Campbell
fc25609ecb
Fixed branch alias
2020-07-13 21:19:31 +02:00
Sebastian Bergmann
f545f18a87
Add ParentConnectingVisitor and NodeConnectingVisitor ( #681 )
2020-07-11 11:31:43 +02:00
Nikita Popov
c346bbfafe
Release PHP-Parser 4.6.0
2020-07-02 19:12:47 +02:00
Nikita Popov
4abc531213
Canonicalize to PHP 8 comment token format
...
The trailing newline is no longer part of the comment token.
2020-06-27 18:53:09 +02:00
TomasVotruba
b58b19ed1d
Add constructor promotion support
2020-06-27 17:57:47 +02:00
Nikita Popov
0d2d8f95a1
FPPP: Support catch without variable
2020-06-27 17:42:46 +02:00
TomasVotruba
244db65dd1
[PHP 8.0] Add trailing comma in parameter list
2020-06-12 20:24:25 +02:00
Nikita Popov
53c2753d75
Release PHP-Parser 4.5.0
2020-06-03 09:24:19 +02:00
TomasVotruba
b5f5313d73
[PHP 8.0] Add exception witout variable
2020-06-03 09:18:13 +02:00
Máté Kocsis
32f89662f3
Add support for the mixed type
2020-05-28 23:39:04 +02:00
Hassan Tariq
f33f081c8f
Fix a minor typo
2020-04-18 10:56:47 +02:00
Nikita Popov
bd43ec7152
Release PHP-Parser 4.4.0
2020-04-10 18:34:50 +02:00
Nikita Popov
d86ca0f745
Support arbitrary expressions in new/instanceof
2020-02-22 21:09:03 +01:00
Nikita Popov
c8d1216531
Treat magic constants like normal constants
2020-02-22 21:06:03 +01:00
Nikita Popov
8999a13cb2
Make class constants fully dereferencable
2020-02-22 21:03:53 +01:00
Nikita Popov
c1eaa0d5cd
Unify array and object dereferencability
2020-02-22 20:57:39 +01:00
Nikita Popov
ca5f7c9761
Split productions, unify {} dereferencing
2020-02-22 20:54:55 +01:00
Nikita Popov
ad696ee75d
Make encapsed strings fully dereferencable
2020-02-22 20:49:11 +01:00
Nikita Popov
6770deda3d
Check that ::class on object works
2020-02-22 20:42:11 +01:00
Nikita Popov
568236a305
Allow expressions in list()
...
Similar to the previous commit: list() syntactically accepts any
expression and non-variables are compile-time errors. The special
case of ($a) ends up being legal by accident.
2020-02-19 21:29:17 +01:00
Nikita Popov
9dda080a9d
Allow expressions in isset()
...
Partial fix for #653 . PHP 7 allows expressions inside isset(), but
rejects non-variables in the compiler. A side-effect of this is that
isset(($x)) is allowed, though this is not intentional.
2020-02-19 21:14:33 +01:00
Nikita Popov
3ec87ef757
Don't require doc comment to be last comment
...
Fixes #652 .
2020-02-15 10:52:34 +01:00
Nikita Popov
a2443aaefa
Make check in numeric literal separator emulator more precise
...
a) Don't check for !== false, preg_match() return 0 if there is
no match. This effectively means that the check was always true.
b) Check for hex characters only if there's an 0x prefix. 1_1 is
very likely a numeric separator, but a_b might well be part of
an identifier.
Fixes #639 .
2020-02-09 22:50:19 +01:00
Ruud Kamphuis
64f4d5b619
Add getProperty
to ClassLike
2020-02-09 22:43:42 +01:00
Nikita Popov
f56d90d4f8
Add additional tests for modifying a Nop comment
2020-02-09 17:23:42 +01:00
Nikita Popov
40aa2282df
Remove trailing comma
2020-02-09 17:15:59 +01:00
Nikita Popov
46cbd9393a
Place Nop nodes more precisely
...
If the Nop is created to collect comments, place it directly after
the comment, instead of at the next non-whitespace character.
2020-02-09 17:10:33 +01:00