Commit Graph

1355 Commits

Author SHA1 Message Date
Ruud Kamphuis 0bb49dc40f Add return type to getDebugInfo 2024-10-24 13:37:17 +02:00
Fabien Potencier 612c7a14be Improve ImportNode impl 2024-10-24 07:23:37 +02:00
Fabien Potencier 2735f81a22 feature #4398 Rename Node classes related to variables (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Rename Node classes related to variables

Whenever I work on Twig internals, it's always complicated to reason about variable names, probably because the class names are confusing. This PR is an attempt to find "better" and more explicit names.

This PR does the following renaming:

 * `NameExpression` to `Variable\ContextVariable`
    Represents the value of a context variable like `$context[VAR] ?? null`

 * `AssignNameExpression` to `Variable\AssignContextVariable`
    Represents a context variable assignment like in `$context[VAR] = `

 * `TempNameExpression` to `Variable\LocalVariable`
    Represents a "private" local variable like `$_l111`

Commits
-------

fc15e7ccbc Rename Node classes related to variables
2024-10-23 22:29:28 +02:00
Fabien Potencier f43eba5b10 minor #4403 Documentation for types tag uses Twig types in examples instead of PHP (drjayvee)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Documentation for types tag uses Twig types in examples instead of PHP

Specifically, "bool" => "boolean" and "int" => "number".

This aligns the `types` documentation with templates.rst. See #4362

Thanks, `@alexander`-schranz!

Commits
-------

f3e0a00cf0 Documentation for types tag uses Twig types in examples instead of PHP
2024-10-23 16:54:05 +02:00
Jeroen Versteeg f3e0a00cf0 Documentation for types tag uses Twig types in examples instead of PHP 2024-10-23 16:54:04 +02:00
Fabien Potencier fc15e7ccbc Rename Node classes related to variables 2024-10-23 12:36:57 +02:00
Fabien Potencier af4090757b feature #4402 Rework macros handling (fabpot)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Rework macros handling

Commits
-------

f1481be00f Remove MacroAutoImportNodeVisitor
72693884c4 Simplify code
1105964873 Rework macros handling
2024-10-22 11:03:01 +02:00
Fabien Potencier f1481be00f Remove MacroAutoImportNodeVisitor 2024-10-21 12:09:30 +02:00
Fabien Potencier 72693884c4 Simplify code 2024-10-21 07:20:17 +02:00
Fabien Potencier 1105964873 Rework macros handling 2024-10-20 21:53:20 +02:00
Fabien Potencier bcceaa3468 minor #4401 reduce the deprecation noise when more than one argument is passed (xabbuh)
This PR was merged into the 3.x branch.

Discussion
----------

reduce the deprecation noise when more than one argument is passed

When more than one argument is passed to parseArguments(), one deprecation is triggered for each argument. Since passing any argument is deprecated the number of triggered deprecations can be reduced for more than one argument being passed.

Commits
-------

26256fc488 reduce the deprecation noise when more than one argument is passed
2024-10-20 21:48:23 +02:00
Fabien Potencier bde4efac5a Remove default value for an argument 2024-10-20 11:39:45 +02:00
Christian Flothmann 26256fc488 reduce the deprecation noise when more than one argument is passed
When more than one argument is passed to parseArguments(), one deprecation
is triggered for each argument. Since passing any argument is deprecated
the number of triggered deprecations can be reduced for more than one
argument being passed.
2024-10-18 11:24:56 +02:00
Fabien Potencier 66658a3c1d Check reserved names in TempNameExpression 2024-10-14 19:42:47 +02:00
Fabien Potencier 950ad5a2fc bug #4396 Fix AssignNameExpression to forbid using names that won't work (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix AssignNameExpression to forbid using names that won't work

Commits
-------

9af72e6323 Fix AssignNameExpression to forbid using names that won't work
2024-10-14 14:07:02 +02:00
Fabien Potencier 9af72e6323 Fix AssignNameExpression to forbid using names that won't work 2024-10-14 13:55:40 +02:00
Fabien Potencier 831e69b77e Do not allow : as macro definition separator 2024-10-14 10:42:32 +02:00
Fabien Potencier 3eda65e94f feature #4391 Add support for named arguments on macro calls and dot operator arguments (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add support for named arguments on macro calls and dot operator arguments

Closes #929
Closes #3635

Commits
-------

223d36bbae Add support for named arguments on macro calls and dot operator arguments
2024-10-11 11:40:44 +02:00
Fabien Potencier 223d36bbae Add support for named arguments on macro calls and dot operator arguments 2024-10-11 11:31:40 +02:00
Fabien Potencier ed1b44470f Improve deprecation messages 2024-10-11 08:16:49 +02:00
Fabien Potencier 0ec3f4a7fe Simplify expression parser code 2024-10-09 10:33:51 +02:00
Fabien Potencier 086c07f319 minor #4385 Refactor expression parser (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Refactor expression parser

Instead of having if statements under `default`, I've moved the code to the `switch` statement, which makes more sense.

Commits
-------

2cdca8cbeb Refactor expression parser
2024-10-09 10:18:59 +02:00
Fabien Potencier 2cdca8cbeb Refactor expression parser 2024-10-09 09:14:02 +02:00
Fabien Potencier 7bf0f6f376 Cleanup code 2024-10-08 21:51:29 +02:00
Fabien Potencier 62f0a96b68 Introduce a way to test Twig callables at compile time 2024-10-08 18:41:34 +02:00
Fabien Potencier aca4d22e89 Allow arrow functions everywhere 2024-10-07 23:04:29 +02:00
Fabien Potencier 4f7d487a17 Fix deprecation dep feature 2024-10-06 23:17:05 +02:00
Fabien Potencier 5e9448310d Deprecate passing a string or an array to Twig callable arguments accepting arrow functions (pass a Closure) 2024-10-04 18:51:37 +02:00
Fabien Potencier 247658c730 feature #4367 Trigger deprecations when using "??" and "not" without explicit parentheses when precedence will change in 4.0 (fabpot)
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 #3387
Closes #3642

Commits
-------

2081b1ff74 Deprecate using the not unary operator without parenthesis
f4aacafd78 Deprecate using ?? without explicit parentheses
2024-10-02 14:17:10 +02:00
Fabien Potencier 2081b1ff74 Deprecate using the not unary operator without parenthesis 2024-10-02 14:16:34 +02:00
Fabien Potencier f4aacafd78 Deprecate using ?? without explicit parentheses 2024-10-01 21:58:05 +02:00
HypeMC 8893944e0c Add support for logical xor operator 2024-10-01 20:43:59 +02:00
Fabien Potencier b93eb3ce58 Refactor code 2024-09-30 14:05:03 +02:00
Fabien Potencier 9f8c52d022 Add some type hints 2024-09-30 14:02:17 +02:00
Fabien Potencier a0d52fd41f feature #4363 Deprecate using ~ with + or - in an expression without using parentheses to clarify precedence (fabpot)
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
2024-09-30 13:59:28 +02:00
Fabien Potencier 816c510cef Deprecate using ~ with + or - in an expression without using parentheses to clarify precedence 2024-09-30 13:51:47 +02:00
Fabien Potencier 43b6e098df Change some type hints to be more precise 2024-09-30 13:47:10 +02:00
Fabien Potencier fa8050b24f feature #4364 Deprecate not passing AbstractExpression args to most constructor arguments for classes extending AbstractExpression (fabpot)
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
2024-09-30 12:26:54 +02:00
Fabien Potencier 824143d5e5 Deprecate not passing AbstractExpression args to most constructor arguments for classes extending AbstractExpression 2024-09-30 12:15:47 +02:00
Fabien Potencier b46ca43f61 Remove obsolete method 2024-09-30 12:00:38 +02:00
Fabien Potencier d133ab7e70 Add support for detecting if an expression had explicit parentheses 2024-09-30 11:55:38 +02:00
Fabien Potencier c599125a39 Unify error messages when a filter expects a mapping/sequence 2024-09-29 18:29:04 +02:00
Fabien Potencier 3523d34b50 Add missing is_iterable() checks 2024-09-29 18:23:14 +02:00
Fabien Potencier bfa44742da Add quotes on filters/functions in CoreExtension 2024-09-29 18:18:48 +02:00
Fabien Potencier 0da899d911 Use get_debug_type() everywhere 2024-09-29 18:08:29 +02:00
Fabien Potencier 1488238e32 Fix ignored parenthesis in expressions 2024-09-28 23:47:01 +02:00
Nicolas Grekas cff6f1ca80 Implement the enum function 2024-09-27 08:23:21 +02:00
Fabien Potencier 8b278986b8 Deprecate using Node directly, introduce EmptyNode and Nodes 2024-09-27 07:42:41 +02:00
Fabien Potencier d9d8bb0df3 Add support for inline comments 2024-09-27 07:32:09 +02:00
Fabien Potencier a23cd9feeb Fix CS 2024-09-26 21:22:23 +02:00