MimIR
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::ast::AnnexInfo Struct Reference

Bookkeeping of an annex introduced by an AxmDecl. More...

#include <mim/ast/ast.h>

Classes

struct  [struct].sym
struct  [struct].id

Public Member Functions

 AnnexInfo (Sym sym_plugin, Sym sym_tag, tag_t id_tag)
plugin_t plugin_id () const
 The mangled plugin part of the flags.
flags_t base () const
 The base flags (plugin + tag, no sub).
Sym qualified (Driver &driver, Sym own) const
 Fully-qualified plugin.tag[.sub] name for own (this decl's own Dbg::sym), registered for by-name lookups (e.g.

Public Attributes

struct  sym
struct  id
fe::Vector< fe::Vector< Sym > > subs
 List of subs which is a list of aliases.
fe::Vector< Sym > names
 The constructor or field names its variant or sigma declares, by index; an unnamed field is the empty Sym.
bool fields = false
 Are AnnexInfo::names the fields of a sigma rather than the constructors of a variant?
Dbg normalizer
std::optional< bool > pi
bool fresh = true

Detailed Description

Bookkeeping of an annex introduced by an AxmDecl.

Definition at line 72 of file ast.h.


Class Documentation

◆ mim::ast::AnnexInfo::[struct].sym

struct mim::ast::AnnexInfo::[struct].sym

Definition at line 89 of file ast.h.

Class Members
Sym plugin
Sym tag

◆ mim::ast::AnnexInfo::[struct].id

struct mim::ast::AnnexInfo::[struct].id

Definition at line 93 of file ast.h.

Class Members
tag_t tag

Constructor & Destructor Documentation

◆ AnnexInfo()

mim::ast::AnnexInfo::AnnexInfo ( Sym sym_plugin,
Sym sym_tag,
tag_t id_tag )
inline

Definition at line 73 of file ast.h.

References id, and sym.

Member Function Documentation

◆ base()

flags_t mim::ast::AnnexInfo::base ( ) const
inline

The base flags (plugin + tag, no sub).

Definition at line 81 of file ast.h.

References mim::Annex::flags(), and plugin_id().

Referenced by qualified().

◆ plugin_id()

plugin_t mim::ast::AnnexInfo::plugin_id ( ) const
inline

The mangled plugin part of the flags.

Derived from sym.plugin which is guaranteed mangleable by the time an AnnexInfo exists.

Definition at line 79 of file ast.h.

References mim::Annex::mangle(), and sym.

Referenced by mim::ast::Emitter::attach(), mim::ast::Emitter::attach_alias(), and base().

◆ qualified()

Sym mim::ast::AnnexInfo::qualified ( Driver & driver,
Sym own ) const
inline

Fully-qualified plugin.tag[.sub] name for own (this decl's own Dbg::sym), registered for by-name lookups (e.g.

compile.named); own == sym.tag (no enclosing mod) omits the .sub part.

Definition at line 84 of file ast.h.

References base(), and sym.

Referenced by mim::ast::Emitter::attach(), and mim::ast::Emitter::attach_alias().

Member Data Documentation

◆ fields

bool mim::ast::AnnexInfo::fields = false

Are AnnexInfo::names the fields of a sigma rather than the constructors of a variant?

Definition at line 100 of file ast.h.

Referenced by mim::ast::add_names().

◆ fresh

bool mim::ast::AnnexInfo::fresh = true

Definition at line 103 of file ast.h.

◆ id

◆ names

fe::Vector<Sym> mim::ast::AnnexInfo::names

The constructor or field names its variant or sigma declares, by index; an unnamed field is the empty Sym.

Definition at line 99 of file ast.h.

Referenced by mim::ast::add_names().

◆ normalizer

Dbg mim::ast::AnnexInfo::normalizer

Definition at line 101 of file ast.h.

◆ pi

std::optional<bool> mim::ast::AnnexInfo::pi

Definition at line 102 of file ast.h.

◆ subs

fe::Vector<fe::Vector<Sym> > mim::ast::AnnexInfo::subs

List of subs which is a list of aliases.

Definition at line 97 of file ast.h.

Referenced by mim::ast::add_alias().

◆ sym

struct mim::ast::AnnexInfo::[struct].sym mim::ast::AnnexInfo::sym

Referenced by AnnexInfo(), plugin_id(), and qualified().


The documentation for this struct was generated from the following file: