Skip to content

Commit 85aade2

Browse files
committed
Fix static analysis of filters in ternary expressions
1 parent 8774d97 commit 85aade2

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Python Liquid Change Log
22

3+
## Version 2.0.2 (unreleased)
4+
5+
- Fixed static analysis of filters in ternary expressions. See [#180](https://github.com/jg-rp/liquid/issues/180).
6+
37
## Version 2.0.1
48

59
- Fixed bad imports from `typing_extensions`.

liquid/static_analysis.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -301,19 +301,25 @@ async def _visit(node: Node, template_name: str, scope: _StaticScope) -> None:
301301
def _extract_filters(
302302
expression: Expression, template_name: str
303303
) -> Iterable[tuple[str, Span]]:
304-
if (
305-
isinstance(expression, (FilteredExpression, TernaryFilteredExpression))
306-
and expression.filters
307-
):
308-
yield from (
309-
(f.name, Span(template_name, f.token.start_index))
310-
for f in expression.filters
311-
)
304+
if isinstance(expression, TernaryFilteredExpression):
305+
yield from _extract_filters(expression.left, template_name)
312306

313-
if isinstance(expression, TernaryFilteredExpression) and expression.tail_filters:
307+
if expression.filters:
308+
yield from (
309+
(f.name, Span(template_name, f.token.start_index))
310+
for f in expression.filters
311+
)
312+
313+
if expression.tail_filters:
314+
yield from (
315+
(f.name, Span(template_name, f.token.start_index))
316+
for f in expression.tail_filters
317+
)
318+
319+
if isinstance(expression, FilteredExpression) and expression.filters:
314320
yield from (
315321
(f.name, Span(template_name, f.token.start_index))
316-
for f in expression.tail_filters
322+
for f in expression.filters
317323
)
318324

319325
for expr in expression.children():

tests/test_static_analysis.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ def test_analyze_ternary_filters(env: Environment) -> None:
151151
"y": [Variable(["y"], Span("", 54))],
152152
},
153153
filters={
154+
"upcase": [Span("", 7)],
154155
"default": [Span("", 30)],
155156
"append": [Span("", 46)],
156157
},

0 commit comments

Comments
 (0)