This PR was merged into the 3.x branch.
Discussion
----------
Deprecate using ~ with + or - in an expression without using parentheses to clarify precedence
See https://wiki.php.net/rfc/concatenation_precedence for the related change in PHP 7.4.
Commits
-------
816c510cef Deprecate using ~ with + or - in an expression without using parentheses to clarify precedence
This PR was merged into the 3.x branch.
Discussion
----------
Change some type hints to be more precise
Commits
-------
43b6e098df Change some type hints to be more precise
This PR was merged into the 3.x branch.
Discussion
----------
Deprecate not passing AbstractExpression args to most constructor arguments for classes extending AbstractExpression
Commits
-------
824143d5e5 Deprecate not passing AbstractExpression args to most constructor arguments for classes extending AbstractExpression
This PR was merged into the 3.x branch.
Discussion
----------
Add support for detecting if an expression had explicit parentheses
It's going to help with operator precedence changes and their related deprecation notices.
Commits
-------
d133ab7e70 Add support for detecting if an expression had explicit parentheses
This PR was merged into the 3.x branch.
Discussion
----------
Unify error messages when a filter expects a mapping/sequence
Besides unifying the error messages, I've also removed the mention of `\Traversable` as this does not help and is an implementation detail (mapping and sequence are Twig terms, Traversable is not).
Or maybe we should introduce the notion of a "iterable"?
Commits
-------
c599125a39 Unify error messages when a filter expects a mapping/sequence
This PR was merged into the 3.x branch.
Discussion
----------
Use get_debug_type() everywhere
Commits
-------
0da899d911 Use get_debug_type() everywhere
This PR was merged into the 3.x branch.
Discussion
----------
Add more information about the filter and the negative operators
Refs #974
Refs #1368
Refs #1634
Refs #2470
Commits
-------
fae6cfc32f Add more information about the filter and the negative operators
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Fix ignored parenthesis in expressions
Closes#3705Closes#2891
Commits
-------
1488238e32 Fix ignored parenthesis in expressions
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Added details in the doc of filters and functions of IntlExtension
Commits
-------
8716392603 Added details in the doc of filters and functions of IntlExtension
This PR was merged into the 3.x branch.
Discussion
----------
Update plural.rst: Fixing filter name
Info is taken from https://github.com/twigphp/Twig/pull/4357#issuecomment-2378435199
Besides, I changed to a more illustrative example word. One of the rare cases where ChatGPT was indeed useful... ;-)
Commits
-------
bd33033fd1 Update plural.rst: Fixing filter name
This PR was merged into the 3.x branch.
Discussion
----------
Implement the `enum` function
Fixes#3681
Requires #4353
Commits
-------
cff6f1ca80 Implement the `enum` function
This PR was merged into the 3.x branch.
Discussion
----------
Update plural.rst: Fixing(?) broken links
More important question: Is the filter's name `plural` or `pluralize`??
Commits
-------
cc3a2b7bac Update plural.rst: Fixing(?) broken links
This PR was merged into the 3.x branch.
Discussion
----------
Add support for inline comments
Closes#4001
Commits
-------
d9d8bb0df3 Add support for inline comments
This PR was merged into the 3.x branch.
Discussion
----------
Fix template name in error for an unknown dynamic extends called from an include
Closes#3265
The code was introduced in #1529, but removing it nowadays does not break any existing test.
Review ignoring whitespace.
Commits
-------
4824f2a4a3 Fix template name in error for an unknown dynamic extends called from an include
This PR was merged into the 3.x branch.
Discussion
----------
Add support for accessing class constants with the dot operator
This PR allows accessing class constants from objects: `{{ foo.SOME_CONSTANT }}`. This should nicely replace the `constant()` function when an object is at hand, and is actually needed to make the `enum` function work in #4352.
Commits
-------
1ea0452323 Add support for accessing class constants with the dot operator
This PR was merged into the 3.x branch.
Discussion
----------
Fix getting a property on an object casted to an array
Closes#3371
Commits
-------
7d5269e100 Fix getting a property on an object casted to an array
This PR was merged into the 3.x branch.
Discussion
----------
Replace strtr() by strtolower()
The performance of `strtolower()` has been fixed in PHP 8.
Commits
-------
04471ab8cd Replace strtr() by strtolower()
This PR was merged into the 3.x branch.
Discussion
----------
Add fixture filename as key
This way, it's easier to see which test failed and what the file was.
In PHPStorm this is visualized very nice.

Commits
-------
633d70103d Add fixture filename as key
This PR was merged into the 3.x branch.
Discussion
----------
Remove useless assign in compiled code
It's already unset / initialized on catch.
Having it this way, is a bit easier for me when analyzing this in TwigStan.
Commits
-------
5c73c6695c Remove useless assign in compiled code
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Improve escape deprecation message
This was introduced in https://github.com/twigphp/Twig/pull/4176
According to #4343 the message can be improved.
I made a few changes to the test to make it easier to work with. Best to review this PR **commit by commit**.
/cc `@stof`
Commits
-------
7256713c86 Improve escape deprecation message