Enum sway_core::language::ty::TyExpressionVariant
source · pub enum TyExpressionVariant {
Show 27 variants
Literal(Literal),
FunctionApplication {
call_path: CallPath,
contract_call_params: HashMap<String, TyExpression>,
arguments: Vec<(Ident, TyExpression)>,
function_decl_id: DeclarationId,
self_state_idx: Option<StateIndex>,
selector: Option<ContractCallParams>,
},
LazyOperator {
op: LazyOp,
lhs: Box<TyExpression>,
rhs: Box<TyExpression>,
},
VariableExpression {
name: Ident,
span: Span,
mutability: VariableMutability,
},
Tuple {
fields: Vec<TyExpression>,
},
Array {
contents: Vec<TyExpression>,
},
ArrayIndex {
prefix: Box<TyExpression>,
index: Box<TyExpression>,
},
StructExpression {
struct_name: Ident,
fields: Vec<TyStructExpressionField>,
span: Span,
},
CodeBlock(TyCodeBlock),
FunctionParameter,
IfExp {
condition: Box<TyExpression>,
then: Box<TyExpression>,
else: Option<Box<TyExpression>>,
},
AsmExpression {
registers: Vec<TyAsmRegisterDeclaration>,
body: Vec<AsmOp>,
returns: Option<(AsmRegister, Span)>,
whole_block_span: Span,
},
StructFieldAccess {
prefix: Box<TyExpression>,
field_to_access: TyStructField,
field_instantiation_span: Span,
resolved_type_of_parent: TypeId,
},
TupleElemAccess {
prefix: Box<TyExpression>,
elem_to_access_num: usize,
resolved_type_of_parent: TypeId,
elem_to_access_span: Span,
},
EnumInstantiation {
enum_decl: TyEnumDeclaration,
variant_name: Ident,
tag: usize,
contents: Option<Box<TyExpression>>,
enum_instantiation_span: Span,
variant_instantiation_span: Span,
},
AbiCast {
abi_name: CallPath,
address: Box<TyExpression>,
span: Span,
},
StorageAccess(TyStorageAccess),
IntrinsicFunction(TyIntrinsicFunctionKind),
AbiName(AbiName),
EnumTag {
exp: Box<TyExpression>,
},
UnsafeDowncast {
exp: Box<TyExpression>,
variant: TyEnumVariant,
},
WhileLoop {
condition: Box<TyExpression>,
body: TyCodeBlock,
},
Break,
Continue,
Reassignment(Box<TyReassignment>),
StorageReassignment(Box<TyStorageReassignment>),
Return(Box<TyExpression>),
}
Variants
Literal(Literal)
FunctionApplication
Fields
call_path: CallPath
contract_call_params: HashMap<String, TyExpression>
arguments: Vec<(Ident, TyExpression)>
self_state_idx: Option<StateIndex>
If this is Some(val)
then val
is the metadata. If this is None
, then
there is no selector.
selector: Option<ContractCallParams>
LazyOperator
VariableExpression
Tuple
Fields
fields: Vec<TyExpression>
Array
Fields
contents: Vec<TyExpression>
ArrayIndex
StructExpression
CodeBlock(TyCodeBlock)
FunctionParameter
IfExp
AsmExpression
Fields
registers: Vec<TyAsmRegisterDeclaration>
returns: Option<(AsmRegister, Span)>
whole_block_span: Span
StructFieldAccess
Fields
prefix: Box<TyExpression>
field_to_access: TyStructField
field_instantiation_span: Span
resolved_type_of_parent: TypeId
TupleElemAccess
Fields
prefix: Box<TyExpression>
elem_to_access_num: usize
resolved_type_of_parent: TypeId
elem_to_access_span: Span
EnumInstantiation
Fields
enum_decl: TyEnumDeclaration
for printing
variant_name: Ident
for printing
tag: usize
contents: Option<Box<TyExpression>>
enum_instantiation_span: Span
If there is an error regarding this instantiation of the enum, use these spans as it points to the call site and not the declaration. They are also used in the language server.
variant_instantiation_span: Span
AbiCast
StorageAccess(TyStorageAccess)
IntrinsicFunction(TyIntrinsicFunctionKind)
AbiName(AbiName)
a zero-sized type-system-only compile-time thing that is used for constructing ABI casts.
EnumTag
Fields
exp: Box<TyExpression>
grabs the enum tag from the particular enum and variant of the exp
UnsafeDowncast
performs an unsafe cast from the exp
to the type of the given enum variant
WhileLoop
Break
Continue
Reassignment(Box<TyReassignment>)
StorageReassignment(Box<TyStorageReassignment>)
Return(Box<TyExpression>)
Trait Implementations
sourceimpl Clone for TyExpressionVariant
impl Clone for TyExpressionVariant
sourcefn clone(&self) -> TyExpressionVariant
fn clone(&self) -> TyExpressionVariant
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceimpl Debug for TyExpressionVariant
impl Debug for TyExpressionVariant
sourceimpl Display for TyExpressionVariant
impl Display for TyExpressionVariant
sourceimpl PartialEq<TyExpressionVariant> for TyExpressionVariant
impl PartialEq<TyExpressionVariant> for TyExpressionVariant
impl Eq for TyExpressionVariant
Auto Trait Implementations
impl RefUnwindSafe for TyExpressionVariant
impl Send for TyExpressionVariant
impl Sync for TyExpressionVariant
impl Unpin for TyExpressionVariant
impl UnwindSafe for TyExpressionVariant
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.