Page MenuHomePhabricator

Add a method to query whether an AASTNode is a descendent of another node
ClosedPublic

Authored by joshuaspence on Aug 7 2015, 3:59 AM.
Tags
None
Referenced Files
F18829661: D13819.diff
Oct 24 2025, 11:36 PM
F18809974: D13819.id33369.diff
Oct 19 2025, 6:28 PM
F18803646: D13819.diff
Oct 18 2025, 2:20 AM
F18756332: D13819.id33412.diff
Oct 5 2025, 10:54 AM
F18729954: D13819.id33411.diff
Sep 30 2025, 12:01 PM
F18621509: D13819.diff
Sep 15 2025, 8:35 AM
Unknown Object (File)
May 25 2025, 6:21 AM
Unknown Object (File)
May 10 2025, 6:14 AM
Subscribers

Details

Summary

Ref T8674. This implementation is not really very efficient, but I'll try to iterate on that.

Test Plan

See D13820.

Diff Detail

Repository
rPHU libphutil
Branch
master
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 7520
Build 8080: [Placeholder Plan] Wait for 30 Seconds
Build 8079: arc lint + arc unit

Event Timeline

joshuaspence retitled this revision from to Add a method to query whether an AASTNode is a descendent of another node.
joshuaspence updated this object.
joshuaspence edited the test plan for this revision. (Show Details)
joshuaspence added a reviewer: epriestley.
epriestley edited edge metadata.

Consider isDescendantOf($x) or hasDescendant($x) or isAncestorOf($x) or hasAncestor($x) or similar to make intent more clear -- I think this $x->isDescendant($y) can be reasonably be read as either "$x is a descendant of $y" or "$y is a descendant of $x".

Specifically, I would expect this to mean "$x is a descendant of $y", because most $x->is...() methods return information about $x, but it actually means "$y is a descendant of $x". I would perhaps call this method isAncestorOf($y). This makes the $x/$y relationship more clear, although I don't think X being an ancestor of itself is always intuitive (but I don't have a better term for it offhand).

This revision is now accepted and ready to land.Aug 8 2015, 4:47 PM
joshuaspence edited edge metadata.
This revision was automatically updated to reflect the committed changes.