![]() |
Spicy
|
#include <declaration.h>
Public Member Functions | |
| const auto & | id () const |
| auto | linkage () const |
| const auto & | fullyQualifiedID () const |
| const auto & | canonicalID () const |
| auto | declarationIndex () const |
| void | setID (const ID &id) |
| void | setLinkage (declaration::Linkage linkage) |
| void | setFullyQualifiedID (ID id) |
| void | setCanonicalID (ID id) |
| virtual std::string_view | displayName () const =0 |
| node::Properties | properties () const override |
| Declaration (const Declaration &other) | |
| Declaration (Declaration &&other)=default | |
| Declaration & | operator= (const Declaration &other)=delete |
| Declaration & | operator= (Declaration &&other)=delete |
Public Member Functions inherited from hilti::Node | |
| node::Tag | nodeTag () const |
| bool | hasParent () const |
| Node * | parent (int i=1) const |
| template<typename T > | |
| T * | parent () const |
| auto | pathLength () const |
| const auto & | meta () const |
| const auto & | location () const |
| void | setMeta (Meta m) |
| auto | scope () const |
| auto | getOrCreateScope () |
| void | clearScope () |
| Result< std::pair< Declaration *, ID > > | lookupID (const ID &id, const std::string_view &what) const |
| virtual bool | inheritScope () const |
| std::string | typename_ () const |
| uint64_t | identity () const |
| const auto & | children () const |
| template<typename T > | |
| T * | child (unsigned int i) const |
| template<typename T > | |
| T * | childTryAs (unsigned int i) const |
| Node * | child (unsigned int i) const |
| template<typename T > | |
| auto | children (int begin, std::optional< int > end) const |
| template<typename T > | |
| auto | children (int begin, std::optional< int > end) |
| template<typename T > | |
| node::Set< T > | childrenOfType () const |
| bool | hasChild (const Node *n, bool recurse=false) const |
| Node * | sibling (Node *n) const |
| void | addChild (ASTContext *ctx, Node *n) |
| void | addChildren (ASTContext *ctx, const Nodes &children) |
| void | removeChild (Node *n) |
| void | removeChildren (int begin, std::optional< int > end) |
| void | setChild (ASTContext *ctx, size_t idx, Node *n) |
| void | replaceChildren (ASTContext *ctx, const Nodes &children) |
| void | replaceChild (ASTContext *ctx, Node *old, Node *new_) |
| template<typename T > | |
| bool | isA () const |
| template<typename T > | |
| bool | isA_ () const |
| template<typename T > | |
| T * | as () const |
| template<typename T > | |
| T * | as () |
| template<typename T > | |
| const T * | tryAs () const |
| template<typename T > | |
| T * | tryAs () |
| template<typename T > | |
| T * | tryAs_ () |
| void | print (std::ostream &out, bool compact, bool user_visible) const |
| std::string | print () const |
| std::string | printRaw () const |
| operator std::string () const | |
| std::string | dump () const |
| std::string | renderSelf (bool include_location=true) const |
| void | addError (std::string msg, std::vector< std::string > context={}) |
| void | addError (std::string msg, node::ErrorPriority priority, std::vector< std::string > context={}) |
| void | addError (std::string msg, const Location &l, std::vector< std::string > context={}) |
| void | addError (std::string msg, Location l, node::ErrorPriority priority, std::vector< std::string > context={}) |
| bool | hasErrors () const |
| const auto & | errors () const |
| void | clearErrors () |
| void | clearChildren () |
| void | retain () |
| void | release () |
| bool | isRetained () const |
| virtual void | dispatch (visitor::Dispatcher &v)=0 |
| virtual std::string_view | branchTag () const |
| Node & | operator= (const Node &other)=delete |
| Node & | operator= (Node &&other) noexcept=delete |
Public Member Functions inherited from hilti::node::WithDocString | |
| const std::optional< DocString > & | documentation () const |
| void | clearDocumentation () |
| void | setDocumentation (DocString doc) |
Protected Member Functions | |
| Declaration (ASTContext *ctx, node::Tags node_tags, Nodes children, ID id, declaration::Linkage linkage, Meta meta={}) | |
| void | setDeclarationIndex (ast::DeclarationIndex index) |
| std::string | _dump () const override |
| HILTI_NODE_0 (Declaration, override) | |
Protected Member Functions inherited from hilti::Node | |
| Node (ASTContext *ctx, node::Tags node_tags, Nodes children, Meta meta) | |
| Node (ASTContext *ctx, node::Tags node_tags, Meta meta) | |
| Node (Node &&other)=default | |
| Node (const Node &other) | |
| virtual std::string | _typename () const |
| virtual Node * | _clone (ASTContext *ctx) const =0 |
Friends | |
| class | ASTContext |
Additional Inherited Members | |
Static Public Attributes inherited from hilti::Node | |
| static constexpr uint16_t | NodeLevel = 0 |
| static constexpr ::hilti::node::Tag | NodeTag = ::hilti::node::tag::Node |
| static constexpr ::hilti::node::Tags | NodeTags = {::hilti::node::tag::Node} |
Base class for implementing declaration nodes.
|
overrideprotectedvirtual |
Returns additional information to include into the node's dump() output, as provided by derived classes.
Reimplemented from hilti::Node.
Reimplemented in hilti::declaration::Parameter, hilti::declaration::Module, and hilti::declaration::Field.
|
inline |
Returns the canonical ID associated with the declaration once it has been set during AST processing. Canonical IDs are guaranteed to be globally unique within one instance of an AST context. However, the ID is guaranteed to be unique and stable only once AST processing has finished. Returns an empty ID if not yet set.
|
inline |
Returns the index the AST context associates with the declaration. This may become set during AST resolving. If not set yet, returns None.
|
pure virtual |
Returns a user-friendly descriptive name for the type of object the declaration refers to (e.g., "local variable"). This can be used in messages to the user.
Implemented in spicy::declaration::Hook, spicy::type::unit::item::Variable, spicy::type::unit::item::UnresolvedField, spicy::type::unit::item::UnitHook, spicy::type::unit::item::Switch, spicy::type::unit::item::Sink, spicy::type::unit::item::Property, spicy::type::unit::item::Field, spicy::type::unit::item::Block, spicy::declaration::UnitHook, hilti::type::bitfield::BitRange, hilti::declaration::Type, hilti::declaration::Property, hilti::declaration::Parameter, hilti::declaration::Module, hilti::declaration::LocalVariable, hilti::declaration::ImportedModule, hilti::declaration::GlobalVariable, hilti::declaration::Function, hilti::declaration::Field, hilti::declaration::Expression, and hilti::declaration::Constant.
|
inline |
|
inline |
Returns the declaration's ID.
|
inline |
Returns the declaration's linkage.
|
inlineoverridevirtual |
Implements the node interface.
Reimplemented from hilti::Node.
Reimplemented in hilti::declaration::Module, spicy::type::unit::item::UnresolvedField, spicy::type::unit::item::Field, spicy::declaration::Hook, hilti::type::bitfield::BitRange, hilti::declaration::Type, hilti::declaration::Parameter, hilti::declaration::ImportedModule, hilti::declaration::Function, and hilti::declaration::Field.
|
inline |
|
inline |
|
inline |
Sets the declaration's ID. This clears fully-qualified and canonical IDs as they likely need to be recomputed now.
|
inline |
Sets the declaration's linkage.