pub enum ExpressionKind {
Show 26 variants Error(Box<[Span]>), Literal(Literal), AmbiguousPathExpression(Box<AmbiguousPathExpression>), FunctionApplication(Box<FunctionApplicationExpression>), LazyOperator(LazyOperatorExpression), Variable(Ident), Tuple(Vec<Expression>), TupleIndex(TupleIndexExpression), Array(ArrayExpression), Struct(Box<StructExpression>), CodeBlock(CodeBlock), If(IfExpression), Match(MatchExpression), Asm(Box<AsmExpression>), MethodApplication(Box<MethodApplicationExpression>), Subfield(SubfieldExpression), DelineatedPath(Box<DelineatedPathExpression>), AbiCast(Box<AbiCastExpression>), ArrayIndex(ArrayIndexExpression), StorageAccess(StorageAccessExpression), IntrinsicFunction(IntrinsicFunctionExpression), WhileLoop(WhileLoopExpression), Break, Continue, Reassignment(ReassignmentExpression), Return(Box<Expression>),
}

Variants§

§

Error(Box<[Span]>)

A malformed expression.

Used for parser recovery when we cannot form a more specific node. The list of Spans are for consumption by the LSP and are, when joined, the same as that stored in expr.span.

§

Literal(Literal)

§

AmbiguousPathExpression(Box<AmbiguousPathExpression>)

An ambiguous path where we don’t know until type checking whether this is a free function call or a UFCS (Rust term) style associated function call.

§

FunctionApplication(Box<FunctionApplicationExpression>)

§

LazyOperator(LazyOperatorExpression)

§

Variable(Ident)

§

Tuple(Vec<Expression>)

§

TupleIndex(TupleIndexExpression)

§

Array(ArrayExpression)

§

Struct(Box<StructExpression>)

§

CodeBlock(CodeBlock)

§

If(IfExpression)

§

Match(MatchExpression)

§

Asm(Box<AsmExpression>)

§

MethodApplication(Box<MethodApplicationExpression>)

§

Subfield(SubfieldExpression)

A subfield expression is anything of the form:

<ident>.<ident>
§

DelineatedPath(Box<DelineatedPathExpression>)

A delineated path is anything of the form:

<ident>::<ident>

Where there are n >= 2 idents. These could be either enum variant constructions, or they could be references to some sort of module in the module tree. For example, a reference to a module:

std::ops::add

And, an enum declaration:

enum MyEnum {
  Variant1,
  Variant2
}

MyEnum::Variant1
§

AbiCast(Box<AbiCastExpression>)

A cast of a hash to an ABI for calling a contract.

§

ArrayIndex(ArrayIndexExpression)

§

StorageAccess(StorageAccessExpression)

§

IntrinsicFunction(IntrinsicFunctionExpression)

§

WhileLoop(WhileLoopExpression)

A control flow element which loops continually until some boolean expression evaluates as false.

§

Break

§

Continue

§

Reassignment(ReassignmentExpression)

§

Return(Box<Expression>)

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more