Other Extensions
=begin rakudoc
Overview
Most extension work belongs in one of the focused guides:
The remaining extender-facing items in What-for-Who.md are shared exception
classes that are not covered by the focused extension guides.
Query slang and Topic slang
Operator symbols live in Qwiratry::Query::Slang::Ops and are re-exported by
Qwiratry::Query::Slang. Universe operators and bare navigation under given
need the Topic slang mixed into MAIN after those operators are imported:
use Qwiratry::Query::Slang;
use Qwiratry::Query::Slang::Topic;
Do not put Topic activation in the same module that declares many infix/prefix
is export operators: importing those operators registers categoricals that
refresh MAIN and can wipe a same-use Topic mixin. Topic is RakuAST-only
(via Slangify); legacy grammar is unsupported.
Qwiratry::Mold::Slang already loads Ops and Topic so mold when bodies can
use topic-based forms. Custom extension CUs that use query operators and
rely on given/bare nav should load Topic the same way.
X::Qwiratry::Operator
Extenders need this when they add operator-adjacent behavior and no more specific exception fits. It carries operator type and query AST context, which makes failures easier to diagnose.
Prefer a more specific exception when the failure clearly belongs to formats, locations, walkers, or transformers.
X::Qwiratry::TypeCheck
Extenders need this when they add transformer, mold, or validation behavior that enforces result type constraints.
Use it when an extension has an expected result type and the actual result does not conform. This keeps type failures consistent with the rest of Qwiratry's transformer system.
=end rakudoc