Commit Graph

6800 Commits

Author SHA1 Message Date
Fabien Potencier fc9ec820bf Simplify code 2024-08-24 10:53:54 +02:00
Fabien Potencier 00a766f58e Merge branch '3.x' into 4.x
* 3.x:
  Deprecate returning null from TokenParserInterface::parse()
2024-08-24 10:53:41 +02:00
Fabien Potencier 3a90b86f0a feature #4227 Deprecate returning null from TokenParserInterface::parse() (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate returning null from TokenParserInterface::parse()

Commits
-------

0c751361 Deprecate returning null from TokenParserInterface::parse()
2024-08-24 10:52:38 +02:00
Fabien Potencier 0c75136162 Deprecate returning null from TokenParserInterface::parse() 2024-08-24 10:52:24 +02:00
Fabien Potencier dfd9d0faad Enforce more type hints 2024-08-24 10:51:35 +02:00
Fabien Potencier b858e61ddb Merge branch '3.x' into 4.x
* 3.x:
  Deprecate not passing a BodyNode instance as the body of a ModuleNode constructor
  Update a phpdoc (ModuleNode is final now)
2024-08-24 10:50:41 +02:00
Fabien Potencier 63105a6410 feature #4225 Deprecate not passing a BodyNode instance as the body of a ModuleNode or MacroNode constructor (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate not passing a `BodyNode` instance as the body of a `ModuleNode` or `MacroNode` constructor

Commits
-------

51e93aa1 Deprecate not passing a BodyNode instance as the body of a ModuleNode constructor
2024-08-24 10:50:09 +02:00
Fabien Potencier 51e93aa130 Deprecate not passing a BodyNode instance as the body of a ModuleNode constructor 2024-08-24 10:49:53 +02:00
Fabien Potencier fb46572f94 minor #4224 Update a phpdoc (ModuleNode is final now) (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Update a phpdoc (ModuleNode is final now)

Commits
-------

313303b3 Update a phpdoc (ModuleNode is final now)
2024-08-24 10:48:55 +02:00
Fabien Potencier bca2d993b0 Enforce string|int for Node names in Node 2024-08-24 10:48:28 +02:00
Fabien Potencier de634c0c68 Merge branch '3.x' into 4.x
* 3.x:
  Remove `Template::*_CALL` const optimisations
  Deprecate node names that are not strings or integers
2024-08-24 10:47:05 +02:00
Fabien Potencier 992f637297 feature #4223 Add support for integers in methods of Twig\Node\Node that take a Node name (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add support for integers in methods of `Twig\Node\Node` that take a Node name

Closes #3811

Commits
-------

1ee4210b Deprecate node names that are not strings or integers
2024-08-24 10:45:55 +02:00
Fabien Potencier 75d888f2e0 minor #4226 Remove Template::*_CALL const optimisations (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

Remove `Template::*_CALL` const optimisations

* Template::ANY_CALL
* Template::ARRAY_CALL
* Template::METHOD_CALL

Commits
-------

094892aa Remove `Template::*_CALL` const optimisations
2024-08-24 10:11:23 +02:00
Simon André 094892aa3b Remove Template::*_CALL const optimisations
* Template::ANY_CALL
* Template::ARRAY_CALL
* Template::METHOD_CALL
2024-08-24 10:03:24 +02:00
Fabien Potencier 313303b366 Update a phpdoc (ModuleNode is final now) 2024-08-24 09:53:44 +02:00
Fabien Potencier 1ee4210ba9 Deprecate node names that are not strings or integers 2024-08-23 22:35:24 +02:00
Fabien Potencier 7e973202c9 Merge branch '3.x' into 4.x
* 3.x:
  Update docs
2024-08-23 09:26:25 +02:00
Fabien Potencier 86330fb9bc Update docs 2024-08-23 09:26:18 +02:00
Fabien Potencier e5f32d7a2f Fix bad merge 2024-08-23 09:26:00 +02:00
Fabien Potencier 7a4f6ea6ff Update docs 2024-08-23 09:25:12 +02:00
Fabien Potencier 34dce7cd9f Merge branch '3.x' into 4.x
* 3.x:
  Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES
2024-08-23 09:25:03 +02:00
Fabien Potencier 1fe2c00fa2 bug #4221 Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES

Refs #4146

While trying to debug #4146, I realized that this optimization is not possible as we don't know how nodes are going to be used.

See the script provided in #4146 to reproduce the problem.

`@brandonkelly` Can you confirm that this fixes your problem? Maybe there is also an issue with yield vs echo, but the script provided in the issue runs fine for me after this PR.

Commits
-------

7121673c Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES
2024-08-23 09:23:28 +02:00
Fabien Potencier 7121673c9c Deprecate OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES 2024-08-23 09:22:06 +02:00
Fabien Potencier 96e5d65d42 minor #4218 Add private types on 4.x (smnandre)
This PR was squashed before being merged into the 4.x branch.

Discussion
----------

Add private types on 4.x

(WIP but i open to gather early feedback / comments)

Objective: add missing types

- [x] Private properties
- [x] Return type on private methods
- [ ] Argument types on private methods (?not sure)

Maybe "`@internal`" then

Commits
-------

72bbe489 Add private types on 4.x
2024-08-21 20:05:43 +02:00
Simon André 72bbe489e1 Add private types on 4.x 2024-08-21 20:05:41 +02:00
Fabien Potencier 8da936a2e0 feature #4199 Do not hide unnecessary escape characters (ruudk)
This PR was squashed before being merged into the 4.x branch.

Discussion
----------

Do not hide unnecessary escape characters

Follow up of #4176, #4123 and #2712.

Now that we have deprecated unnecessary escape in v3, we can change the behavior in v4.

With this change, unnecessary will no longer be ignored, but handled like any other character.

This allows for writing fully qualified class names like this:
```twig
{{ constant('App\Entity\User::SOME_CONSTANT') }}
```

Instead of having to escape the `\` in v3:
```twig
{{ constant('App\\Entity\\User::SOME_CONSTANT') }}
```

/cc `@fabpot` `@stof`

Commits
-------

53c24bfc Do not hide unnecessary escape characters
2024-08-21 19:42:34 +02:00
Ruud Kamphuis 53c24bfc33 Do not hide unnecessary escape characters 2024-08-21 19:42:26 +02:00
Fabien Potencier 878d2a200a Merge branch '3.x' into 4.x
* 3.x:
  Improve deprecation message
2024-08-21 19:39:57 +02:00
Fabien Potencier e0077a4a6c minor #4219 Improve deprecation message (ruudk)
This PR was merged into the 3.x branch.

Discussion
----------

Improve deprecation message

See https://github.com/twigphp/Twig/pull/4199#discussion_r1723456834

/cc `@stof` `@fabpot`

Commits
-------

90107929 Improve deprecation message
2024-08-21 19:39:46 +02:00
Ruud Kamphuis 90107929da Improve deprecation message
See https://github.com/twigphp/Twig/pull/4199#discussion_r1723456834
2024-08-21 19:36:27 +02:00
Fabien Potencier 2acd9e8d9f Remove obsolete code 2024-08-21 08:21:08 +02:00
Fabien Potencier b5372f5764 Merge branch '3.x' into 4.x
* 3.x:
  Fix CS
  Remove obsolete comment
  Resolves #4200
2024-08-20 18:12:56 +02:00
Fabien Potencier 302971f34e Fix CS 2024-08-20 18:10:26 +02:00
Fabien Potencier f4bca4fa44 Remove obsolete comment 2024-08-20 18:06:11 +02:00
Fabien Potencier 5918aa939f feature #4212 ChainLoader constructor should accept iterable instead of array (TheCelavi)
This PR was merged into the 3.x branch.

Discussion
----------

ChainLoader constructor should accept iterable instead of array

Closes #4200

Commits
-------

6ef13d1e Resolves #4200
2024-08-20 18:00:03 +02:00
Nikola Svitlica a.k.a TheCelavi 6ef13d1e0b Resolves #4200 2024-08-20 17:30:37 +02:00
Fabien Potencier 9808763717 Simplify code 2024-08-20 17:22:36 +02:00
Fabien Potencier 5678ee080d Merge branch '3.x' into 4.x
* 3.x:
  Refactor code
  Add a test
2024-08-20 17:21:22 +02:00
Fabien Potencier b9b8d52572 minor #4217 Refactor code (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Refactor code

Commits
-------

31037d0e Refactor code
2024-08-20 17:20:15 +02:00
Fabien Potencier 31037d0e51 Refactor code 2024-08-20 15:39:54 +02:00
Fabien Potencier 63e35b9620 Add a test 2024-08-20 09:34:22 +02:00
Fabien Potencier 06c378ef27 Remove compat layer (use_yield) 2024-08-19 20:21:08 +02:00
Fabien Potencier 5820fba263 Merge branch '3.x' into 4.x
* 3.x:
  Update CHANGELOG and docs
  Swap BC layer for yield-ready and reclaim perf loss
  Add test about version
2024-08-19 20:19:25 +02:00
Fabien Potencier 3a307cd41d Update CHANGELOG and docs 2024-08-19 20:06:41 +02:00
Fabien Potencier 80c15749f9 feature #4216 Swap BC layer for yield-ready and reclaim perf loss (nicolas-grekas)
This PR was merged into the 3.x branch.

Discussion
----------

Swap BC layer for yield-ready and reclaim perf loss

Follows #3999

Fix #4146
Fix #4103

When `use_yield` is set to false (the default), this PR reverts the implementation of the `render()` method to use a wrapping output buffer instead of hooking between each steps of generators. In this mode, the behavior of the yield method is not "pure": it triggers a mix of yield and echo. But this is fine for render and display methods.

When `use_yield` is set to `true`, we skip that wrapping output buffer. This makes twig compatible with fibers (and this also makes compilation fail if a non-YieldReady extension is found.)

That makes the name of the option not ideal, but BC rulez FTW.

Commits
-------

5d1a19a8 Swap BC layer for yield-ready and reclaim perf loss
2024-08-19 20:02:33 +02:00
Nicolas Grekas 5d1a19a80c Swap BC layer for yield-ready and reclaim perf loss 2024-08-19 17:31:12 +02:00
Fabien Potencier 17997cf7fc minor #4214 Add test about Environment version constants. (VincentLanglet)
This PR was merged into the 3.x branch.

Discussion
----------

Add test about Environment version constants.

Hi `@fabpot`

The Environment Version constants seems to be manually updated.
https://github.com/twigphp/Twig/blob/fe36e084b4e208c44e30886053c8594bb99bd78f/src/Environment.php#L46-L51

A mistake was made on the 3.11 version, the MAJOR_VERSION was set to 4 instead of 3
https://github.com/twigphp/Twig/blob/e80fb8ebba85c7341a97a9ebf825d7fd4b77708d/src/Environment.php#L48

It was fixed in another version, but I think it could be useful to have some test about the consistency of all those constants.
Such test would have fail for the 3.11 version and avoid the mistake.

Commits
-------

254abc8c Add test about version
2024-08-19 08:48:36 +02:00
Fabien Potencier 65048fa3bb Fix CS 2024-08-18 19:27:14 +02:00
Fabien Potencier 15c0adb3ed Merge branch '3.x' into 4.x
* 3.x:
  Fix CS
2024-08-18 19:26:04 +02:00
Fabien Potencier 675cb2d141 Fix CS 2024-08-18 19:25:19 +02:00