Module expressions

Source
Expand description

Implements expressions: paths, operands, rvalues, lvalues

Structs§

BuiltinIndexOp
One of 8 built-in indexing operations.
ConstantExpr
FnPtr
Place

Enums§

AggregateKind
An aggregated ADT.
BinOp
Binary operations.
BorrowKind
BuiltinFunId
An built-in function identifier, identifying a function coming from a standard library.
CastKind
For all the variants: the first type gives the source type, the second one gives the destination type.
FieldProjKind
FunId
A function identifier. See crate::ullbc_ast::Terminator
FunIdOrTraitMethodRef
NullOp
Nullary operation
Operand
PlaceKind
ProjectionElem
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.
RawConstantExpr
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