Skip to content

fix: call block on an undefined or non-callable name fails at render (0156) - #487

Merged
rmorozov merged 3 commits into
masterfrom
claude/project-thread-x4dqjr
Oct 12, 2026
Merged

rmorozov merged 3 commits into
masterfrom
claude/project-thread-x4dqjr

Conversation

@rmorozov

Copy link
Copy Markdown
Member

Requested by Ruslan · project thread

Before: {% call m() %}{% endcall %} rendered nothing when m was undefined or not callable (e.g. {% set m = 1 %}), and a user expression callable was silently skipped.

After: an undefined name raises UndefinedError (through the undefined policy, as a call expression does), a non-callable value raises "'int' object is not callable", and an expression callable is called with caller and its result is written, as in Jinja2.

The change is in MacroCallStatement::Render (src/statements.cpp). It reuses CheckUndefinedUse(..., Call) and the not-callable message from CallExpression.

How: three corpus cases in test/parity/cases/statements.py (call_block_undefined, call_block_int, call_block_string) with regenerated expected output (Python 3.12, jinja2 3.1.6). No allow-list lines existed for 0156, so none were deleted. Task 0156 marked done. Roles: none (main session only), no verifier round.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TTbrLyoY9DSFiiy2xJfcEb


Generated by Claude Code

…r (0156)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TTbrLyoY9DSFiiy2xJfcEb
@rmorozov rmorozov self-assigned this Oct 12, 2026
@rmorozov
rmorozov marked this pull request as ready for review October 12, 2026 11:54
@rmorozov
rmorozov merged commit 663b393 into master Oct 12, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants