Fabien Potencier
1ee9dae55a
Cover and document the matches operator throwing on an invalid UTF-8 subject
2026-09-18 17:15:53 +01:00
Fabien Potencier
5c1be030c5
Report a clear error when a string cannot be split into characters
2026-09-18 17:15:50 +01:00
Fabien Potencier
40d57c6445
Report the macro call parentheses deprecation once per call site and name the macro
2026-09-18 12:17:08 +02:00
Fabien Potencier
e5347301d7
Throw on PCRE errors in the matches operator
2026-08-28 08:41:42 +02:00
Fabien Potencier
8a37332def
Fix duplicate macro deprecation wording
2026-08-27 13:32:19 +02:00
Fabien Potencier
cf971e1a59
Remove lazy macro import resolution
2026-08-27 12:17:08 +02:00
Fabien Potencier
e2014eb92a
Fix Traversable sequence destructuring semantics
2026-08-23 09:40:21 +02:00
Ilia Alshanetsky
9de1b3db98
Fix array destructuring from a Traversable
...
Sequence destructuring compiled its right-hand side straight into
array_pad(), which throws "Argument #1 must be of type array" when a
Traversable is provided:
{% do [a, b] = items %}
with an IteratorAggregate/Generator for items crashed with a TypeError.
Coerce Traversables via iterator_to_array() before padding, matching
the behavior of the spread, merge, and slice operations which already
accept Traversables.
2026-08-22 12:36:24 -04:00
Fabien Potencier
dc8f96df3e
Add the include_only function to render a template without access to the current context
2026-08-11 20:58:31 +02:00
Fabien Potencier
8ca4866a95
Clarify duplicate macro deprecation message
2026-08-03 17:35:03 +02:00
Fabien Potencier
b53e100444
Nested macro imports
2026-08-03 10:30:32 +02:00
Fabien Potencier
34d9c67d38
Deprecate using parentheses when testing a macro with the defined test
2026-07-31 12:09:23 +02:00
Fabien Potencier
d7f8b4eb1c
Redesign macro calls and argument handling
2026-07-30 13:53:24 +02:00
Fabien Potencier
b762bc94b9
Make the sandbox a first-class citizen with a dedicated Sandbox class
2026-07-30 12:05:47 +02:00
Fabien Potencier
ad305b414e
Deprecate macro calls without parentheses
2026-07-28 16:13:23 +02:00
Fabien Potencier
258089b8a6
Deprecate duplicate macro definitions
2026-07-27 12:24:45 +02:00
Matthieu Lempereur
fc4dee393c
fix version in deprecation message for tag usage outside of root template
2026-07-08 19:01:20 +02:00
Fabien Potencier
0d283d304a
Throw a SyntaxError instead of a PHP fatal error when a macro argument is defined twice
2026-07-04 11:17:28 +02:00
Alexander Pankratov
f5afaabf54
Fix Markup truthiness in boolean expressions
2026-06-11 15:33:21 +02:00
Fabien Potencier
a69d3dc71e
Keep captured block definitions supported
2026-06-11 07:43:59 +02:00
Fabien Potencier
ffcae61b15
Move extends validation into correctness visitor
2026-06-11 07:43:47 +02:00
Fabien Potencier
d96eac3895
Fix correctness visitor regressions
2026-06-11 07:43:46 +02:00
Fabien Potencier
4b2e651dd5
Address review: fix block-nesting checks in CorrectnessNodeVisitor
2026-06-11 07:43:36 +02:00
Fabien Potencier
de7bbc7be9
Move the extends-in-block and extends-in-macro errors into the CorrectnessNodeVisitor
2026-06-11 07:43:36 +02:00
Fabien Potencier
c12100525e
Introduce a CorrectnessNodeVisitor to validate that templates are semantically correct
2026-06-11 07:43:33 +02:00
Fabien Potencier
87093aab9e
Allow calling a macro with a dynamic name via the dot operator
2026-06-06 17:10:52 +02:00
Fabien Potencier
e3c0c3fe5a
feature #4834 Track the source offset of each token and expose it in syntax errors (fabpot)
...
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Track the source offset of each token and expose it in syntax errors
Commits
-------
3868bac531 Avoid allocating a normalized copy when counting newlines without carriage returns
a82782ac30 Report columns in syntax errors
4943bb405c Track the source offset of each token
2026-06-06 08:56:09 +02:00
Fabien Potencier
d0cc1fcd40
Remove issue references in tests
2026-06-06 08:55:16 +02:00
Fabien Potencier
a82782ac30
Report columns in syntax errors
2026-06-05 20:28:45 +02:00
Fabien Potencier
a3eda4b1fd
Make the include() function return a Markup object
2026-06-04 21:32:12 +02:00
Fabien Potencier
ecf0ebf78b
bug #4830 Fix nested block() resolution when a directly rendered block calls parent() (fabpot)
...
This PR was merged into the 3.x branch.
Discussion
----------
Fix nested block() resolution when a directly rendered block calls parent()
Closes #3321
Commits
-------
279fe13b22 Fix nested block() resolution when a directly rendered block calls parent()
2026-06-04 21:30:37 +02:00
Fabien Potencier
279fe13b22
Fix nested block() resolution when a directly rendered block calls parent()
2026-06-03 22:13:40 +02:00
Fabien Potencier
2171127676
Fix nested block() resolution when a directly rendered block calls parent()
2026-06-03 22:09:09 +02:00
Fabien Potencier
635cea4789
Document new support for any expression as a dynamic mapping key
2026-05-27 14:54:58 +02:00
Fabien Potencier
3190b9ae12
Pre-escape HTML input on the spaceless filter
2026-05-20 08:29:48 +02:00
Matthias Pigulla
04aa3df49f
Add html_attr_relaxed escaping strategy
2026-02-08 18:59:07 +01:00
Fabien Potencier
3cc1b5233c
Add support for renaming variables in object destructuring
2026-02-06 22:12:59 +01:00
Fabien Potencier
8a0f8acbdf
Add support for object and mapping destructuring
2026-01-21 13:21:14 +01:00
Fabien Potencier
bb99af3b39
Assignment operator array destructuring
2026-01-21 08:46:28 +01:00
Fabien Potencier
bfbbef05f2
Add the = assignment operator
2026-01-19 16:39:57 +01:00
Felds Liscia
263c04fd1f
Add null-safe operator
2026-01-17 14:57:47 +01:00
Fabien Potencier
94c8bdd6a6
Add === and !== operators
2026-01-14 09:58:48 +01:00
Fabien Potencier
2376bbaf3e
Fix spread operator behavior
2026-01-12 08:54:38 +01:00
Nicolas Grekas
9ae75d315c
Fix accessing arrays with stringable objects as key
2025-10-24 14:19:16 +02:00
Vincent Langlet
cc12df995c
Introduce registerUndefinedTestCallback
2025-09-16 07:40:27 +02:00
Vincent Langlet
30977bdea9
Support two words test guard
2025-09-15 07:51:41 +02:00
Fabien Potencier
09f9a22310
Fix wrong array index (again)
2025-03-21 09:42:17 +01:00
Fabien Potencier
b86fd0a059
Remove obsolete files
2025-02-26 22:13:11 +01:00
Fabien Potencier
56204e951a
Move some tests
2025-02-26 22:10:10 +01:00
Fabien Potencier
7b43bd0fd7
Fix Error when the trace has Twig file/line information instead of the original PHP info
2025-02-26 21:02:58 +01:00