This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Trigger deprecations when using "??" and "not" without explicit parentheses when precedence will change in 4.0
Closes#3387Closes#3642
Commits
-------
2081b1ff74 Deprecate using the not unary operator without parenthesis
f4aacafd78 Deprecate using ?? without explicit parentheses
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
----------
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 merged into the 3.x branch.
Discussion
----------
Fix the possibility to override an aliased block (via use)
Closes#3709
Commits
-------
955611d5bb Fix the possibility to override an aliased block (via use)
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Add template cache hot reload
Closes#3880
This PR achieves 2 things in the minimum amount of code (in 2 commits):
* It adds a new `RemovableCacheInterface` that allows cache to be removed.
* It adds a memory cache to allow updating existing templates in the same process (think FrakenPHP for instance) without polluting the permanent cache.
Commits
-------
00ba8046b0 Add test
dca5099aad Add hot cache reload for templates
786a67b1a9 Add RemovableCacheInterface
This PR was merged into the 3.x branch.
Discussion
----------
Optimize compiled code for "set" tag
Commits
-------
9855e35d44 Optimize compiled code for "set" tag