Commit Graph

1264 Commits

Author SHA1 Message Date
Fabien Potencier cc1045e4e4 Merge branch '3.x' into 4.x
* 3.x:
  Replace `return; yield` with `yield from []`
  Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate
  Fix MacroTest
2024-09-03 13:55:51 +02:00
Ruud Kamphuis 09a43a9f6f Replace return; yield with yield from []
This has the same effect, but looks less hacky and makes PHPStan happy.
https://phpstan.org/r/df7fcc88-1df8-428e-b675-5dc6965c34d6

Previously this was needed to work properly with output capturing.
2024-09-03 09:55:58 +02:00
Fabien Potencier ebb66610c9 Move back Environment::getGlobals() to public/internal 2024-09-02 17:23:35 +02:00
Fabien Potencier b7ded5c569 bug #4260 don't read current key and value when end of iterator is reached (xabbuh)
This PR was merged into the 4.x branch.

Discussion
----------

don't read current key and value when end of iterator is reached

see failures in symfony/symfony#58145

Commits
-------

12b4cdcf don't read current key and value when end of iterator is reached
2024-09-02 16:35:38 +02:00
Christian Flothmann 038d70f2aa remove no longer needed PHP version checks 2024-09-02 15:38:31 +02:00
Christian Flothmann 12b4cdcf5e don't read current key and value when end of iterator is reached 2024-09-02 15:31:28 +02:00
Fabien Potencier 5e9d905866 Fix wrong merge 2024-09-01 09:48:10 +02:00
Fabien Potencier 05ea8f073c Merge branch '3.x' into 4.x
* 3.x:
  Only unset `_iterated` when there is an `else` node
2024-09-01 09:47:37 +02:00
Ruud Kamphuis a16910e14d Only unset _iterated when there is an else node
Same as #4249

Even though PHP does not complain, PHPStan does.
> Cannot unset offset '_iterated' on array{ ... the context values ... }

Since this is compiled code, we can easily produce a bit more valid code in the eyes of PHPStan.
2024-09-01 08:53:55 +02:00
Fabien Potencier 5c0b2d8478 Remove obsolete code 2024-08-30 20:45:16 +02:00
Fabien Potencier 35bb20ebac Merge branch '3.x' into 4.x
* 3.x:
  Adjust `cycle` implementation
  Fix CS
2024-08-30 20:44:20 +02:00
Fabien Potencier a39b6e164c minor #4241 Adjust cycle implementation (smnandre)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Adjust `cycle` implementation

Update code following [#4158](https://github.com/twigphp/Twig/issues/4158)
* return mixed
* trigger when non countable
* type the position argument

Add doc precisions

Commits
-------

7c3c1615 Adjust `cycle` implementation
2024-08-30 20:43:09 +02:00
Simon André 7c3c16154e Adjust cycle implementation 2024-08-30 20:43:06 +02:00
Fabien Potencier 938ee704b4 Fix CS 2024-08-30 16:22:35 +02:00
Fabien Potencier 18c548fe96 Fix merge 2024-08-30 16:22:11 +02:00
Fabien Potencier 573ccf0c13 Merge branch '3.x' into 4.x
* 3.x:
  Add more types to Template class and compiled templates
2024-08-30 16:18:52 +02:00
Ruud Kamphuis 7e52a68097 Add more types to Template class and compiled templates 2024-08-30 16:17:55 +02:00
Fabien Potencier b949556093 Fix merge 2024-08-30 12:39:46 +02:00
Fabien Potencier 61aa645a30 Merge branch '3.x' into 4.x
* 3.x:
  Fix doc markup
  Add an example on how to iterate over a string
  Remove NodeCaptureInterface from TypesNode
  Use CPP in full code base
  Add types tag
  Bump version
  Bump version
  Prepare the 3.12.0 release
  Fix CS
  Add conditional return types to `ensureTraversable`
  Add return type `isTraitable`
2024-08-30 12:38:56 +02:00
Fabien Potencier 6cd8eb1c05 Simplify code 2024-08-30 08:52:54 +02:00
Ruud Kamphuis 5e3f9d9f26 Remove NodeCaptureInterface from TypesNode
This was accidentally copied from SetNode
2024-08-29 19:39:20 +02:00
Fabien Potencier 70b912fa10 minor #4228 Use CPP in full code base (andreybolonin)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Use CPP in full code base

Commits
-------

28923f42 Use CPP in full code base
2024-08-29 19:29:42 +02:00
andreybolonin1989@gmail.com 28923f4269 Use CPP in full code base 2024-08-29 19:29:39 +02:00
Jeroen Versteeg 67dabd8182 Add types tag 2024-08-29 19:26:49 +02:00
Fabien Potencier 9120e9f3d1 Bump version 2024-08-29 16:16:01 +02:00
Fabien Potencier edcea8bce0 Bump version 2024-08-29 11:53:10 +02:00
Fabien Potencier 4d19472d4a Prepare the 3.12.0 release 2024-08-29 11:51:12 +02:00
Fabien Potencier 33c4879dd8 Fix CS 2024-08-29 10:31:04 +02:00
Fabien Potencier d5b7120bdb minor #4248 Add conditional return types to ensureTraversable (ruudk)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add conditional return types to `ensureTraversable`

This way, static analyzers can understand what the output of this call will be.

Commits
-------

956d09bf Add conditional return types to `ensureTraversable`
2024-08-29 10:30:39 +02:00
Ruud Kamphuis 956d09bf08 Add conditional return types to ensureTraversable 2024-08-29 10:30:36 +02:00
Fabien Potencier 2d347b42cd minor #4250 Add return type isTraitable (ruudk)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add return type `isTraitable`

I'd like to do this for more methods that are exposed in the compiled code. This will ease static analysis as there are less errors that are coming from Twig.

This is just a first small PR to see if this is acceptable 😊

Commits
-------

bb8b9c19 Add return type `isTraitable`
2024-08-29 10:29:50 +02:00
Ruud Kamphuis bb8b9c197c Add return type isTraitable 2024-08-29 10:29:47 +02:00
Fabien Potencier 47d745b7ed Add back the if condition on for loops 2024-08-28 22:14:47 +02:00
Fabien Potencier fecfbd8860 minor #4249 Only unset loop when with_loop (ruudk)
This PR was merged into the 3.x branch.

Discussion
----------

Only unset loop when with_loop

Even though PHP does not complain, PHPStan does.
> Cannot unset offset 'loop' on array{ ... the context values ... }

Since this is compiled code, we can easily produce a bit more valid code in the eyes of PHPStan.

Commits
-------

42245310 Only unset loop when with_loop
2024-08-28 16:12:05 +02:00
Ruud Kamphuis 42245310ee Only unset loop when with_loop
Even though PHP does not complain, PHPStan does.

Since this is compiled code, we can easily produce a bit more valid code in the eyes of PHPStan.
2024-08-28 15:47:07 +02:00
Fabien Potencier 08281273a0 Remove deprecated code 2024-08-28 15:24:00 +02:00
Fabien Potencier 4fa4254a54 Merge branch '3.x' into 4.x
* 3.x:
  deprecate passing a tag to ImportNode
  fix typo
2024-08-28 15:23:30 +02:00
Fabien Potencier 1211c9a490 feature #4247 deprecate passing a tag to ImportNode (xabbuh)
This PR was merged into the 3.x branch.

Discussion
----------

deprecate passing a tag to ImportNode

following #4244

Commits
-------

70396d75 deprecate passing a tag to ImportNode
2024-08-28 15:22:10 +02:00
Christian Flothmann 70396d75dc deprecate passing a tag to ImportNode 2024-08-28 14:40:27 +02:00
Christian Flothmann 8663ec242b fix typo 2024-08-28 14:18:47 +02:00
Fabien Potencier 7cfcefcaef Remove deprecated code 2024-08-28 14:01:55 +02:00
Fabien Potencier e2f0128774 Merge branch '3.x' into 4.x
* 3.x:
  Deprecate the fact that the `extends` and `use` tags are always allowed in a sandboxed template
  Clarify block function
2024-08-28 13:56:42 +02:00
Fabien Potencier 5fca700cbd Deprecate the fact that the extends and use tags are always allowed in a sandboxed template 2024-08-28 13:40:53 +02:00
Nicolas Grekas 7ba6866759 Fix CoreExtension::captureOutput 2024-08-27 16:00:06 +02:00
Fabien Potencier 7c2f55b3d2 Merge branch '3.x' into 4.x
* 3.x:
  Mark implicit macro argument default values as such with an attribute in AST
2024-08-27 13:22:48 +02:00
Fabien Potencier f9f7b7959f feature #4010 Mark implicit macro argument default values as such with an attribute in AST (drjayvee)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Mark implicit macro argument default values as such with an attribute in AST

This change causes no difference to compiled templates or to macro argument semantics.

Consider the following macro:
```twig
{% macro marco(po, lo = null) %}{% endmacro %}
```

With this change, the `ConstantExpression` for argument `po` will have an attribute `is_implicit`, whose value will be `true`. (Note that `lo` will not have that attribute.)

This allows node visitors to distinguish between arguments that do and those that do not have explicit default values even if the value is `null`.

This is useful for [static code analysis](https://github.com/twigphp/Twig/issues/4003).

For example, a static analysis tool might consider arguments with no explicit default value as non-optional.

Commits
-------

e83a8028 Mark implicit macro argument default values as such with an attribute in AST
2024-08-27 13:21:41 +02:00
Jeroen Versteeg e83a8028f0 Mark implicit macro argument default values as such with an attribute in AST 2024-08-27 13:21:06 +02:00
Fabien Potencier 76ed01d48a Merge branch '3.x' into 4.x
* 3.x:
  Fix CS
  Fix two-word tests precedence over one-word tests
2024-08-27 13:19:46 +02:00
Fabien Potencier 41459e0ddb Fix CS 2024-08-27 13:18:23 +02:00
Fabien Potencier 58d5780ef3 Fix two-word tests precedence over one-word tests 2024-08-26 17:47:41 +02:00