Boolean literal
Character literal
Any expression that have a value known at compile time.
Context
Delegate from a function + contextes.
For classes, typeid is computed at runtime.
Field access.
Float literal
IdentifierExpression that as been resolved as a Function. XXX: Deserve to be merged with VariableExpression somehow.
Integral comparisons (integers, pointers, ...)
Index expression : indexedarguments
Integer literal
This is where the compiler does its magic.
new
Null literal
Expression that can in fact be several expressions. A good example is IdentifierExpression that resolve as overloaded functions.
Slice expression : [first .. second]
String literal
Super
IdentifierExpression that as been resolved as a Variable.
Used for type identifier = void;
Virtual table XXX: This is highly dubious. Explore the alternatives and get rid of that.
Cast expressions
tuples. Also used for struct initialization.