Expand description
Implements expressions: paths, operands, rvalues, lvalues
Structs§
- Builtin
Index Op - One of 8 built-in indexing operations.
- Constant
Expr - FnPtr
- Place
Enums§
- Aggregate
Kind - An aggregated ADT.
- BinOp
- Binary operations.
- Borrow
Kind - Builtin
FunId - An built-in function identifier, identifying a function coming from a standard library.
- Cast
Kind - For all the variants: the first type gives the source type, the second one gives the destination type.
- Field
Proj Kind - FunId
- A function identifier. See crate::ullbc_ast::Terminator
- FunId
OrTrait Method Ref - NullOp
- Nullary operation
- Operand
- Place
Kind - Projection
Elem - 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. - RawConstant
Expr - A constant expression.
- Rvalue
- 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
- UnOp
- Unary operation