Fabien Potencier
e5347301d7
Throw on PCRE errors in the matches operator
2026-08-28 08:41:42 +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
a82782ac30
Report columns in syntax errors
2026-06-05 20:28:45 +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
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
Fabien Potencier
09f9a22310
Fix wrong array index (again)
2025-03-21 09:42:17 +01:00
Fabien Potencier
8ff19090f3
Fix precedence rules
2025-02-14 08:38:53 +01:00
Fabien Potencier
7f080086dc
Fix wrong array index
2025-02-01 16:22:20 +01:00
Fabien Potencier
b0399992be
Fix wrong array index
2025-02-01 10:33:30 +01:00
Fabien Potencier
445f74cfe0
[SECURITY] Fix a security issue where escaping was missing when using ??
2025-01-29 07:52:07 +01:00
Fabien Potencier
1af334be89
Fix the Elvis operator when there is some space between ? and :
2024-12-11 10:38:21 +01:00
Gregor Harlan
32a75b7869
Fix ArrayAccess with objects as keys
2024-12-05 12:31:45 +01:00
Simon André
da4d96692a
Support underscores in number literals
2024-12-02 09:46:54 +01:00
Fabien Potencier
223d36bbae
Add support for named arguments on macro calls and dot operator arguments
2024-10-11 11:31:40 +02:00
HypeMC
8893944e0c
Add support for logical xor operator
2024-10-01 20:43:59 +02:00
Fabien Potencier
1488238e32
Fix ignored parenthesis in expressions
2024-09-28 23:47:01 +02:00
Fabien Potencier
57147e7513
feature #4353 Add support for accessing class constants with the dot operator (nicolas-grekas)
...
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
2024-09-26 20:37:32 +02:00
Nicolas Grekas
1ea0452323
Add support for accessing class constants with the dot operator
2024-09-26 18:06:21 +02:00
Fabien Potencier
7d5269e100
Fix getting a property on an object casted to an array
2024-09-26 17:55:00 +02:00
Fabien Potencier
3930d90842
Add more tests
2024-09-24 13:28:51 +02:00
Fabien Potencier
d1beac4dfa
Add compile-time checks for the "matches" operator
2024-09-21 10:29:51 +02:00
Fabien Potencier
333638e8e6
Allow to use a dynamic attribute on the . operator via ()
2024-09-12 21:44:45 +02:00
Fabien Potencier
112de8dcfa
Add support for argument unpacking
2024-09-11 11:55:09 +02:00
Fabien Potencier
ccfe6ad26e
Stringify dynamic mapping keys
2024-09-11 08:58:53 +02:00
Fabien Potencier
5157402a77
Rename hash to mapping
2024-06-22 19:36:24 +02:00
Ryan Weaver
ba4fe3ba34
Adding support for the ...spread operator on arrays and hashes
2023-07-20 16:08:57 +02:00
Jacob Richardson
f136668933
Restores the leniency of the matches twig comparison, allowing null subject to result in a non-match.
...
Resolves BC break introduced in PR https://github.com/twigphp/Twig/pull/3687
As per pattern in https://github.com/twigphp/Twig/pull/3617
2023-02-07 17:07:16 +00:00
Fabien Potencier
a82e94d911
Add some tests
2022-12-27 12:31:54 +01:00
Fabien Potencier
d769ae90d1
feature #3670 Add "some" and "every" filters (Jean-Beru)
...
This PR was merged into the 3.x branch.
Discussion
----------
Add "some" and "every" filters
This PR adds 2 new tests inspired from Javascript's functions: [some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some ) and [every](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every ).
Usage :
```twig
Value {{ ([1, 2, 3] has some v => v == 2) ? 'found' : 'not found' }}
Key {{ ([1, 2, 3] has some (v, k) => k == 2) ? 'found' : 'not found' }}
Every values {{ ([1, 2, 3] has every v => 42 > v) ? 'match' : 'do not match' }}
Every keys {{ ([1, 2, 3] has every (v, k) => 42 > k) ? 'match' : 'do not match' }}
```
Commits
-------
009bb4fd Add "some" and "every" filters
2022-12-26 17:18:29 +01:00
hubert.lenoir
009bb4fd82
Add "some" and "every" filters
2022-03-25 11:04:50 +01:00
Fabien Potencier
3fef888756
Merge branch '2.x' into 3.x
...
* 2.x:
Add a test
Added token type and value to error message
Add phpdoc to SecurityPolicyInterface
2022-03-25 09:18:59 +01:00
Fabien Potencier
beea1a7c4a
Add a test
2022-03-25 09:18:53 +01:00
Fabien Potencier
7759111e75
Merge branch '2.x' into 3.x
...
* 2.x:
Update CHANGELOG
Update CHANGELOG
Fix previous merge
Make round brackets optional for one argument tests like sameas
2020-08-23 14:22:39 +02:00
Fabien Potencier
9bf49d5ccf
Merge branch '1.x' into 2.x
...
* 1.x:
Update CHANGELOG
Fix previous merge
Make round brackets optional for one argument tests like sameas
2020-08-23 14:22:09 +02:00
Andreas
1ee72d9e15
Make round brackets optional for one argument tests like sameas
2020-08-23 14:16:31 +02:00
Fabien Potencier
0fdf96c389
Merge branch '2.x' into 3.x
...
* 2.x:
Add a test
Fix typo
Fix compatibility with PHPUnit 10
Update doc for macro with embed tags
fix typo in ApplyTokenParser PHP doc
Fixes #3351
2020-08-05 16:54:08 +02:00
Fabien Potencier
38bd74d03a
Merge branch '1.x' into 2.x
...
* 1.x:
Add a test
fix typo in ApplyTokenParser PHP doc
Fixes #3351
2020-08-05 16:53:59 +02:00
Fabien Potencier
94aa9bf305
Add a test
2020-08-05 16:53:34 +02:00
Fabien Potencier
57ca24c5f3
Merge branch '2.x' into 3.x
...
* 2.x:
Fix a regression when not using a space before an operator
2020-07-06 15:35:21 +02:00
Fabien Potencier
e063bab1a6
Merge branch '1.x' into 2.x
...
* 1.x:
Fix a regression when not using a space before an operator
2020-07-06 15:35:12 +02:00
Fabien Potencier
841906b110
Fix a regression when not using a space before an operator
2020-07-06 14:40:02 +02:00
Christophe Coevoet
bf24f136b9
Fix the compilation of Twig comparison operators
...
The new compilation implemented in Twig 3 for PHP 7 (to match the
comparison semantic of PHP 8) was missing the surrounding braces (which
are part of the AsbtractBinary compilation). This caused issues when the
full expression would involve other operators (like the not operator),
as things would then rely on having the correct precedence in PHP (which
would not be the case).
2020-06-05 15:54:17 +02:00
Fabien Potencier
0da153eb3b
Merge branch '1.x' into 2.x
...
* 1.x:
Fix ambiguous syntax parsing
2020-02-23 09:42:25 +01:00