Expand description
Implements expressions: paths, operands, rvalues, lvalues
Structs§
- One of 8 built-in indexing operations.
Enums§
- An aggregated ADT.
- Binary operations.
- An built-in function identifier, identifying a function coming from a standard library.
- For all the variants: the first type gives the source type, the second one gives the destination type.
- A function identifier. See crate::ullbc_ast::Terminator
- Nullary operation
- Note that we don’t have the equivalent of “downcasts”. Downcasts are actually necessary, for instance when initializing enumeration values: the value is initially
Bottom
, and we need a way of knowing the variant. For example:((_0 as Right).0: T2) = move _1;
In MIR, downcasts always happen before field projections: in our internal language, we thus merge downcasts and field projections. - A constant expression.
- TODO: we could factor out Rvalue and function calls (for LLBC, not ULLBC). We can also factor out the unops, binops with the function calls. TODO: move the aggregate kind to operands TODO: we should prefix the type variants with “R” or “Rv”, this would avoid collisions
- Unary operation