diff --git a/CHANGELOG b/CHANGELOG index 73cac563e..de1309484 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ * 2.7.3 (2019-XX-XX) - * n/a + * fixed the spaceless filter so that it behaves like the spaceless tag + * fixed BC break on Environment::resolveTemplate() * 2.7.2 (2019-03-12) @@ -181,6 +182,8 @@ * 1.38.3 (2019-XX-XX) + * fixed the spaceless filter so that it behaves like the spaceless tag + * fixed BC break on Environment::resolveTemplate() * fixed the bundled Autoloader to also load namespaced classes * 1.38.2 (2019-03-12) diff --git a/src/Environment.php b/src/Environment.php index c77b54362..250700be3 100644 --- a/src/Environment.php +++ b/src/Environment.php @@ -496,7 +496,7 @@ class Environment * * @param string|TemplateWrapper|array $names A template or an array of templates to try consecutively * - * @return TemplateWrapper + * @return TemplateWrapper|Template * * @throws LoaderError When none of the templates can be found * @throws SyntaxError When an error occurred during compilation @@ -504,13 +504,23 @@ class Environment public function resolveTemplate($names) { if (!\is_array($names)) { - return $this->load($names); + $names = [$names]; } foreach ($names as $name) { + if ($name instanceof Template) { + return $name; + } + if ($name instanceof TemplateWrapper) { + return $name; + } + try { - return $this->load($name); + return $this->loadTemplate($name); } catch (LoaderError $e) { + if (1 === \count($names)) { + throw $e; + } } } diff --git a/src/Extension/CoreExtension.php b/src/Extension/CoreExtension.php index 04d367dc7..bd68db8d8 100644 --- a/src/Extension/CoreExtension.php +++ b/src/Extension/CoreExtension.php @@ -970,7 +970,7 @@ function twig_trim_filter($string, $characterMask = null, $side = 'both') */ function twig_spaceless($content) { - return preg_replace('/>\s+<', $content); + return trim(preg_replace('/>\s+<', $content)); } /** diff --git a/test/Twig/Tests/Fixtures/tags/set/mutating.test b/test/Twig/Tests/Fixtures/tags/set/mutating.test new file mode 100644 index 000000000..ae388bb87 --- /dev/null +++ b/test/Twig/Tests/Fixtures/tags/set/mutating.test @@ -0,0 +1,17 @@ +--TEST-- +"set" tag +--TEMPLATE-- +{% set foo = "foo" %} + +{% set bar %} + {%- set foo = "bar" -%} + bar +{% endset %} + +{{ foo }} +{{ bar }} +--DATA-- +return [] +--EXPECT-- +bar +bar