Why template-argument resolution failed. Definition diagnostics render
each mode differently; graph scans only care that the resolution is
unproven and match Err(_).
Whether a structured using-declaration scope can name qualified as an
ancestor class. The boundary check prevents Base from matching
OtherBase while allowing a relative Base spelling to match ns::Base.
Whether node is the direct structured type payload of a template
argument. This role remains meaningful even when a surrounding expression
is below tree-sitter recovery, because both the template_argument_list
and the type_descriptor retain their named fields.
Return the terminal type-name occurrence in an out-of-line destructor
declarator such as endpoint::~endpoint. Unlike an ordinary terminal
method name, this identifier is a second reference to the owner type.
The byte range of the #if/#elif/#else chain that encloses the smallest
node covering [start_byte, end_byte), or None when nothing there is
conditional.
True when each structured qualifier on the callable-name path has a real
:: token. A macro-prefixed return type can make tree-sitter insert a
zero-width missing separator and parse TYPE Result<T> method() as the
false qualified declarator Result<T>::method.
Return the declaration/function type displaced by a macro-shaped
qualified declarator, together with the enclosing declaration context.
Callers use the macro scope only as structural admission evidence; the
returned node is the real type reference to resolve and record.
Like precise_parent_of, but drops module (namespace) parents. A namespace is a scope, not a
type or receiver, so namespace-scoped functions and constants resolve as free functions and
globals rather than members.