From 9a5d230ea17969e405dc466905be9e9a17bed7bf Mon Sep 17 00:00:00 2001 From: Woody Gilk Date: Fri, 3 Feb 2023 19:17:56 -0600 Subject: [PATCH 1/2] [EvaluationLanguage] Fix null coalescing for object properties --- src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php | 2 ++ .../ExpressionLanguage/Tests/ExpressionLanguageTest.php | 1 + 2 files changed, 3 insertions(+) diff --git a/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php b/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php index e9b10c3295d7..9f39128e5829 100644 --- a/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php +++ b/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php @@ -69,6 +69,8 @@ public function evaluate(array $functions, array $values) { switch ($this->attributes['type']) { case self::PROPERTY_CALL: + $this->nodes['node']->attributes['is_null_coalesce'] = $this->attributes['is_null_coalesce'] ?? false; + $obj = $this->nodes['node']->evaluate($functions, $values); if (null === $obj && ($this->nodes['attribute']->isNullSafe || $this->attributes['is_null_coalesce'])) { $this->attributes['is_short_circuited'] = true; diff --git a/src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php b/src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php index c5dc30cbfb72..7eb7475fad1d 100644 --- a/src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php +++ b/src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php @@ -356,6 +356,7 @@ public function bar() yield ['foo.bar ?? "default"', null]; yield ['foo.bar.baz ?? "default"', (object) ['bar' => null]]; yield ['foo.bar ?? foo.baz ?? "default"', null]; + yield ['foo?.bar?.baz?.qux ?? "default"', (object) ['foo' => null]]; yield ['foo[0] ?? "default"', []]; yield ['foo["bar"] ?? "default"', ['bar' => null]]; yield ['foo["baz"] ?? "default"', ['bar' => null]]; From b3728535ca0f3d10d7d13f30dbdcf32450f1bcd0 Mon Sep 17 00:00:00 2001 From: Woody Gilk Date: Fri, 3 Feb 2023 19:33:43 -0600 Subject: [PATCH 2/2] [EvaluationLanguage] Correct puncuation on docblock for fabpot.io https://fabbot.io/report/symfony/symfony/49230/9a5d230ea17969e405dc466905be9e9a17bed7bf --- src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php b/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php index 9f39128e5829..c175f7bef70e 100644 --- a/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php +++ b/src/Symfony/Component/ExpressionLanguage/Node/GetAttrNode.php @@ -153,7 +153,7 @@ public function toArray() } /** - * Provides BC with instances serialized before v6.2 + * Provides BC with instances serialized before v6.2. */ public function __unserialize(array $data): void { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy