This PR was merged into the 3.x branch.
Discussion
----------
fix version numbers for deprecations
#4482 was merged after the release of 3.16.0
Commits
-------
f90105d0ac fix version numbers for deprecations
This PR was merged into the 3.x branch.
Discussion
----------
Require "erusev/parsedown": "dev-master as 1.x-dev"
Should fix the CI until https://github.com/erusev/parsedown/pull/891 is merged.
Commits
-------
5287da57cc Require "erusev/parsedown": "dev-master as 1.x-dev"
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Support underscores in number literals
```twig
{{ 1000 == 1_000 ? 'yes' : 'no' }}
# now: syntax error
# this PR: "yes"
```
> As of PHP 7.4.0, integer literals may contain underscores (_) between digits, for better readability of literals. These underscores are removed by PHP's scanner.
https://www.php.net/manual/en/language.types.integer.php
This PR replicates that behaviour, using the regexp to match the literals and then remove the "_".
I'm targeting **Twig4** but maybe 3.x would be ok?
I cannot think of a real case that
- does not trigger an error currently
- would work differently after this PR
Commits
-------
da4d96692a Support underscores in number literals
This PR was merged into the 3.x branch.
Discussion
----------
Remove deprecate usage of AssignNameExpression in For Node
Commits
-------
616cd06914 Remove deprecate usage of AssignNameExpression in For Node
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Update coding standards
Commits
-------
07a4ed17d2 Update coding standards
This PR was merged into the 3.x branch.
Discussion
----------
Use [] instead of array() to represent a constant value in compiled code
Commits
-------
49f384f107 Use [] instead of array() to represent a constant value in compiled code
This PR was merged into the 3.x branch.
Discussion
----------
Enforce AbstractBinary for all binary operators
Commits
-------
4f8ba93600 Enforce AbstractBinary for all binary operators
This PR was merged into the 3.x branch.
Discussion
----------
Simplify code even more
More simplifications
Commits
-------
2337c7f812 Simplify code even more
This PR was merged into the 3.x branch.
Discussion
----------
Simplify EscaperNodeVisitor code
This PR simplifies how we escape the ternary operator, and simplifies the whole strategy.
Instead of replacing the `PrintNode`s, we instead "just" wrap the inner expressions.
For the ternary operator, the `InlinePrint` expression is useless and even weird as printing something in the middle of an expression looks very wrong. This is not done anymore and the node is deprecated.
Overall, this PR makes fewer changes to the Node tree which should make things use a bit less memory.
Commits
-------
02cec77619 Simplify EscaperNodeVisitor code
This PR was merged into the 3.x branch.
Discussion
----------
Fix having macro variables starting with an underscore
Closes#4452
Commits
-------
bdb0f3c042 Fix having macro variables starting with an underscore
This PR was merged into the 3.x branch.
Discussion
----------
Fix SafeAnalysisNodeVisitor::getSafe() return value
`SafeAnalysisNodeVisitor::getSafe()` can return `[]` or `null`. Both mean the same thing, but `null` is partially supported as `EscaperNodeVisitor` does not support `null` everywhere (as the node visitor never set `safe` to `null`). But a third party might return `null`. This PR makes the code more robust by deprecating using `null`.
Commits
-------
c402debcb8 Fix EscapeNodeVisitor::isSafeFor()
This PR was merged into the 3.x branch.
Discussion
----------
Simplify code
The current "optimizes" the generated code when possible, but it's probably useless (and removing the code makes compilation a bit faster):
```php
// Before
yield ((a) ? ("a") : ("b"));
// After
((a) ? (yield "a") : (yield "b"));
```
Commits
-------
e39a7af56e Simplify code
This PR was merged into the 3.x branch.
Discussion
----------
Deprecate not passing a Source to TokenStream
Closes#4457
Commits
-------
e7e72ff090 Deprecate not passing a Source to TokenStream
This PR was merged into the 3.x branch.
Discussion
----------
Specify allow round methods
This way, PHPStan can validate invalid input.
Commits
-------
fb43e7a854 Specify allow round methods
This PR was merged into the 3.x branch.
Discussion
----------
Clarify documentation for escape filter
It was somewhat unclear from the documentation what the intended purpose of the 'js' escape strategy is. I wasn't certain *where* exactly in JavaScript such strings were intended to be output. Someone (by that I mean me--though maybe I'm just an idiot...) might inadvertently think the filter was meant to be used somewhere in actual JavaScript code, rather than simply in strings.
Commits
-------
728b361e9d Clarify documentation for escape filter
This PR was merged into the 3.x branch.
Discussion
----------
Forbid adding Nodes to EmptyNode
Commits
-------
ff55f590e7 Forbid adding Nodes to EmptyNode
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Simplify enum usage in docs
There is no need to use `()`.
Commits
-------
7556fe1c6f Simplify enum usage in docs
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Add phpstan analysis
As suggested by `@ruudk` here: https://github.com/twigphp/Twig/pull/4456#issuecomment-2488087625
I think it could be useful to add phpstan analysis on twig.
This is an example of all the things reported when checking level 3 PHPStan (more will get more errors to fix).
Commits
-------
75d48db822 Add phpstan analysis
This PR was merged into the 3.x branch.
Discussion
----------
Fix the intl-extra tests
symfony/intl has updated its data from ICU 75.1 to ICU 76.1, which includes new currency and scripts.
Commits
-------
d69c66643f Fix the intl-extra tests
This PR was merged into the 3.x branch.
Discussion
----------
Fix the string-extra tests when running with older symfony/string
My review comment in https://github.com/twigphp/Twig/pull/4426#discussion_r1822452803 was not taken into account to handle the case of using a version of `symfony/string` without the SpanishInflector, and the PR was merged with broken tests.
Commits
-------
abc34bd263 Fix the string-extra tests when running with older symfony/string
This PR was merged into the 3.x branch.
Discussion
----------
Fix the exception message to match the expected one for not ready nodes
This fixes the tests that got broken in https://github.com/twigphp/Twig/pull/4446 because that PR updated the expected message to include the FQCN of the attribute for both the deprecation and the exception, but forgot to use the FQCN in the actual exception.
Commits
-------
b15ba0f963 Fix the exception message to match the expected one for not ready nodes