Enum sway_core::language::parsed::ExpressionKind
source · pub enum ExpressionKind {
Show 27 variants
Error(Box<[Span]>),
Literal(Literal),
AmbiguousPathExpression(Box<AmbiguousPathExpression>),
FunctionApplication(Box<FunctionApplicationExpression>),
LazyOperator(LazyOperatorExpression),
AmbiguousVariableExpression(Ident),
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, an enum variant or a UFCS (Rust term) style associated function call.
FunctionApplication(Box<FunctionApplicationExpression>)
LazyOperator(LazyOperatorExpression)
AmbiguousVariableExpression(Ident)
And ambiguous single ident which could either be a variable or an enum variant
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::addAnd, an enum declaration:
enum MyEnum {
Variant1,
Variant2
}
MyEnum::Variant1AbiCast(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§
source§impl Clone for ExpressionKind
impl Clone for ExpressionKind
source§fn clone(&self) -> ExpressionKind
fn clone(&self) -> ExpressionKind
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl RefUnwindSafe for ExpressionKind
impl Send for ExpressionKind
impl Sync for ExpressionKind
impl Unpin for ExpressionKind
impl UnwindSafe for ExpressionKind
Blanket Implementations§
source§impl<T> AnyDebug for Twhere
T: Any + Debug,
impl<T> AnyDebug for Twhere T: Any + Debug,
source§fn as_any_ref(&self) -> &(dyn Any + 'static)
fn as_any_ref(&self) -> &(dyn Any + 'static)
Any.source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.