Skip to content

Stdlib: DOMXPath or/and predicates and evaluate() (#32050) - #32057

Merged
PurHur merged 1 commit into
masterfrom
agent/ext-dom-32050-xpath-or-and
Aug 18, 2026
Merged

Stdlib: DOMXPath or/and predicates and evaluate() (#32050)#32057
PurHur merged 1 commit into
masterfrom
agent/ext-dom-32050-xpath-or-and

Conversation

@PurHur

@PurHur PurHur commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

php-src-strict. No new runtime/*.c.

Test plan

  • Zend vs VM vs JIT: test/repro/maintainer_gap_dom_xpath_or_and.php
  • ./script/phpunit.sh --filter 'DomXpathOrAnd(VM|JIT|Aot)Test' — OK (3 tests)
  • ./script/phpunit.sh --filter 'DomXpath(AttrStar|TreeAxes|OrAnd)(VM|JIT|Aot)Test' — OK (9 tests)
  • Full AotTest / ci-local.sh not run (targeted gate only)

Verification transcript

./script/docker-exec.sh -- bash -lc 'php test/repro/maintainer_gap_dom_xpath_or_and.php'
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_dom_xpath_or_and.php'
./script/docker-exec.sh -- bash -lc 'php bin/jit.php test/repro/maintainer_gap_dom_xpath_or_and.php'
# or=2 and=1 eq_or=2 not_id=2 eval_or=true eval_and=false num_or=true count=2.0 starts=2 path_or=true

./script/phpunit.sh --filter 'DomXpathOrAnd(VM|JIT|Aot)Test'
# OK (3 tests, 7 assertions)

Made with Cursor

XPath 1.0 or/and were swallowed as invalid tag names, so [@id or @Class]
and evaluate('true() or false()') diverged from Zend/libxml. Evaluate
boolean ops in VmDomXPath and host-fold the same shapes for user-script AOT.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit f4c1d70 into master Aug 18, 2026
1 check failed
@PurHur
PurHur deleted the agent/ext-dom-32050-xpath-or-and branch August 18, 2026 04:27
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.

Regression: DOMXPath or/and predicates and evaluate() — empty/false vs Zend (ext/dom/xpath.c)

1 participant