Expand description
The item tree (Playbook §3.1): a signature-level view of one .gd file — its
class_name, extends target, and class members (funcs/vars/consts/signals/enums/inner
classes) — lowered from the CST without reading any function body.
This “no bodies” rule is the Phase-3 cache invariant: editing a function body must not
change the item tree, so signature-derived data (and everything keyed on it) can be
reused across body edits once salsa lands. To keep that promise the tree holds only plain
owned data plus reparse-stable AstPtrs — never live CST nodes — so it is Eq and a
body edit that doesn’t move a declaration produces an identical tree.
Structs§
- Annotation
Item - A decorator annotation (
@export,@onready,@tool, …) captured in the item tree. In the CST annotations are sibling nodes of the declaration they decorate (or, for class annotations like@tool, direct children of the file); the item tree lifts them onto the item so checks / accessors don’t re-walk siblings ad hoc. - Const
Item - A
constmember. - Enum
Item - An
enummember. - Func
Item - A
funcmember (signature only — the body is lowered lazily bycrate::body). - Inner
Class Item - An inner
classmember: its name plus its own (recursively lowered) item tree. - Item
Tree - The signature-level model of one file (or one inner class).
- Param
Item - A parameter of a function or signal.
- Signal
Item - A
signalmember. - VarItem
- A
varmember.
Enums§
- Extends
Ref - An
extendstarget. Phase 2 only resolves a bare engine-classExtendsRef::Name; the dotted and script-path forms funnel through the Phase-3 seam toTy::Unknown. - Member
- One class member.
Functions§
- has_
annotation - Whether
annotationscontains one named exactlyname. - item_
tree - Lower a parsed file to its
ItemTree(Playbook §3.1). Pure; reads no bodies.