IR Declaration Nodes
Declarations associate names with types.
Broadly speaking, there are variables and functions. Both of which (essentially) associated a name with a typed piece of memory.
Aliases are different. While still associating a name with a type, it's not an instance of a type, but rather a symbolic representation of the type (so the underlying type may be changed transparently, or perhaps the real type is long winded, or exposes implementation details).
Classes
Named | Named is a base class for named types, like Enum, Struct, Class and so on. This is slightly different from Aggregate since Enum is not a Aggregate, but is a named type. |
Aggregate | Aggregate is a base class for Struct, Union & Class. |
Class | Java style class declaration. Classes enable polymorphism, and are always accessed through opaque references (to prevent slicing -- look it up!) |
_Interface | Java style interface declaration. An interface defines multiple functions that an implementing class must define. A class can inherit from multiple interfaces, and can be treated as an instance of any one of them. |
Union | C style union. Structs are a POD data type, and should be binary compatible with the same union as defined by your friendly neighbourhood C compiler. |
Struct | C style struct. Structs are a POD data type, and should be binary compatible with the same struct as defined by your friendly neighbourhood C compiler. |
Enum | C style Enum. Enums create symbols that are associated with compile time constants. By default, they are enumerated with ascending numbers, hence the name. |
Declaration | Base class for all declarations. |
Variable | Represents an instance of a type. |
Alias | An Alias associates names with a Type. Once declared, using that name is as using that Type directly. |
Function | A function is a block of code that takes parameters, and may return a value. There may be additional implied context, depending on where it's defined. |
FunctionSet | Represents multiple functions associated with a single name. |
FunctionParam | Represents a parameter to a function. |