charon_lib::ast

Module expressions

source
Expand description

Implements expressions: paths, operands, rvalues, lvalues

Structs§

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