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
f56d90d4f8
Add additional tests for modifying a Nop comment
2020-02-09 17:23:42 +01:00
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
bf086d9833
FPPP: Remove special Nop handling
...
This results in ugly formatting, but avoids generating invalid
code.
2020-02-09 16:17:12 +01:00
521addec91
Adding a test case for Nop causing bad new statement placement
2020-02-09 16:16:38 +01:00
664c10121e
Add support for union types
...
We definitely need to introduce a general "Type" abstraction in
the next major version.
2019-11-08 14:45:32 +01:00
3f718ee2c3
[PHP 7.4] Add support for numeric literal separators ( #615 )
...
Implements RFC https://wiki.php.net/rfc/numeric_literal_separator .
Closes #614 .
2019-06-30 12:13:28 +02:00
b9b45dd2bc
Insert T_BAD_CHARACTER tokens for missing characters
...
The token stream should cover all characters in the original code,
insert a dummy token for missing illegal characters. We should
really be doing this in token_get_all() as well.
2019-06-30 11:43:48 +02:00
94d93f27a5
Revert "Recover from error inside alternative array deref syntax"
...
This reverts commit 9d44edf85d
.
2019-05-24 22:58:13 +02:00
9d44edf85d
Recover from error inside alternative array deref syntax
...
This is to improve error recovery for cases like #545 .
2019-05-12 11:38:15 +02:00
aa72c5d674
FPPP: Support inserting into empty lists
2019-05-11 22:49:32 +02:00
60d025a914
Fix attributes for zero-length nop nodes
...
Previously zero-length nop nodes used the lookahead start attributes
and current end attributes. This choice ends up being somewhat weird,
because the end attributes will be the at the last non-whitespace,
non-comment token, which might be quite far back. More problematically,
we may not have encountered any non-discarded token if we're at the
start of the file, in which case we will have no end attributes to
assign.
Change things to use a canonical "zero-length" node representation,
where the end position (token & file) will be exactly one before the
start position.
Fixes #589 .
2019-05-11 20:01:25 +02:00
b2cecec6bc
Remove bogus exprStmt mode test
...
We're always generating expression statements nowadays, this flag
hasn't existed for a long while now...
2019-05-11 18:51:37 +02:00
8012faea54
[PHP 7.4] Add array spread
2019-05-09 19:15:35 +02:00
f3b19c19ef
[PHP 7.4] Add support for arrow functions ( #602 )
...
Per RFC https://wiki.php.net/rfc/arrow_functions_v2 .
2019-05-09 14:17:28 +02:00
9de96821f7
Add support for ??= operator
...
Introduced in PHP 5.4, represented using an AssignOp\Coalesce node.
2019-02-09 11:16:26 +01:00
d5180f0d95
Change test to use correct node type
...
Class name is an Identifier, not a Name.
2019-01-12 17:31:37 +01:00
af8c729603
Add PHP 7.4 typed properties support
2019-01-05 21:34:25 +01:00
0ef61b49bb
add float/double/real KIND support to Cast\Double node
2019-01-05 19:23:00 +01:00
90ee36a7fc
Actually remove assertion...
2018-12-26 14:19:18 +01:00
f42bbc2403
Avoid default action for error production
...
error is not necessarily going to have a semantic value, make sure
that the default action $$=$1 is not used.
Fixes #551 .
2018-11-30 11:00:48 +01:00
3d0f7843d4
Support error recovery for missing return type
...
The return type is set to "null" in this case.
Fixes #544 .
2018-10-25 16:56:50 +02:00
eebaa94647
Flexible doc strings: Fix some issues, add more tests
2018-09-22 10:09:00 +02:00
0ed9065b4c
Flexible doc: Validate and strip indentation
...
If indentation is invalid, we strip on a best-effort basis.
The error position information is not great, but I don't want to
introduce sub-token error positioning at this point in time.
2018-09-21 21:47:01 +02:00
5f73c4de80
Flexible doc: Validate end label indentation
...
Move doc string parsing logic from rebuildParsers.php and
String_::parseDocString() into ParserAbstract. This stuff is
going to get complicated now.
For now only implement the validation of the indentation on the
end label.
2018-09-21 16:31:17 +02:00
83766c8c0e
Partial support for flexible heredoc/nowdoc
...
This only implements the token emulation part, it does not yet
handle the indentation stripping.
Emulating this feature on old PHP versions is really tough and is
not going to work perfectly, but hopefully this implementation is
"good enough".
2018-09-21 11:16:00 +02:00
8b1c9c0409
Store comment at end of class in Nop statement
...
Fixed #509 .
2018-07-07 12:49:49 +02:00
df64d86cf4
Check for empty $append in safeAppend()
...
Can happen with Nop statements.
2018-07-07 12:34:07 +02:00
aac539ef0a
Adjust test output
...
Whoops, forgot to commit this part.
2018-07-07 12:25:01 +02:00
f967b867d5
Improve error recovery in arrays
...
Similarly to missing semicolons, the error is not indicated in the
AST.
Fixes #512 .
2018-07-07 12:24:06 +02:00
7b201b63d2
Error recovery for functions without body
2018-05-13 16:28:08 +02:00
01e85a26c6
Support recovery for param without variable
...
We store an Expr\Error for the variable in this case.
2018-05-12 19:49:39 +02:00
fa99c3fbfb
Recover from foreach without as
2018-04-28 22:31:45 +02:00
7208b1c7ac
Improve error recovery in classes ( #492 )
2018-03-30 16:03:03 +02:00
7f8ff1b9a4
Add support for list reference assignments
...
RFC: https://wiki.php.net/rfc/list_reference_assignment
2018-03-10 16:48:20 +01:00
91a462ce76
PHP 7.3: Add support for trailing commas in calls
...
RFC: https://wiki.php.net/rfc/trailing-comma-function-calls
2018-03-10 16:41:20 +01:00
ad9c42b66a
Merge branch '3.x'
...
Conflicts:
lib/PhpParser/Parser/Php5.php
lib/PhpParser/Parser/Php7.php
2018-01-30 23:07:11 +01:00
08215e7646
Fix duplicate switch comment assignment
...
Fixes #469 .
2018-01-30 23:06:20 +01:00
1cdb280a30
Merge branch '3.x'
2018-01-25 22:28:08 +01:00
d01fafcb40
Handle +(++$x) and -(--$x) as well
2018-01-25 22:27:37 +01:00
b85b6b3519
Merge branch '3.x'
...
Conflicts:
lib/PhpParser/PrettyPrinter/Standard.php
2018-01-25 22:18:32 +01:00
94c715d97e
Fix pretty printing of -(-$x) and +(+$x)
...
Fixes #459 .
2018-01-25 22:17:35 +01:00
4dacbb8d39
FPPP: Fix indentation on list insertion
...
Use indentation of last list element, instead of indentation
before the insertion point.
Fixes #466 .
2018-01-25 22:08:40 +01:00
92b39e3d1f
Fix nNextFreeElement for arrays with trailing comma
...
Ugh.
2017-12-26 21:17:36 +01:00
1c7fd314d1
FPPP: Add heuristic for multi-line lists
2017-12-26 21:14:36 +01:00
8d3cb5f57b
FPPP: Fallback if we must insert a block
2017-12-26 15:41:38 +01:00
de82a40d04
FPPP: Add broken InlineHTML test cases
2017-12-26 15:08:30 +01:00
a86151f24f
FPPP: Fix fallback for inline HTML
2017-12-26 15:08:29 +01:00
4fcdac40d1
FPPP: Fix insertion of multiple elems at start
2017-12-02 15:10:15 +01:00
04feb90d79
Rename abc1.test to basic.test
...
And split off fixup.test.
2017-12-01 23:15:50 +01:00