aaed4cb4dac3e52d358805a24b2b1858dcabd5e1
When resolving a bare $[var]/#[var] reference, Operand set .boolean = true whenever the value's text was EITHER "true" OR "false" - effectively "boolean = looks-boolean-ish" rather than reflecting which of the two it actually was. <if expr="..">/<while expr="..">check exactly this .boolean field (see __if.cpp/__while.cpp), so <if expr="$[flag]"> took the true branch even when flag held the literal text "false". Fixed to boolean = (string == "true"). Verified live: a variable set to value="false" now correctly takes an <if expr="$[var]">'s false branch, and value="true" still correctly takes the true branch. Re-ran tests/posttest.sh - unaffected, no regression. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Languages
HTML
50.2%
TeX
18.7%
C++
15%
JavaScript
7.5%
CSS
4.4%
Other
4.2%