sway_core/language/ty/expression/
asm.rs1use crate::{engine_threading::*, language::ty::*, type_system::*};
2use serde::{Deserialize, Serialize};
3use std::hash::{Hash, Hasher};
4use sway_types::Ident;
5
6#[derive(Clone, Debug, Serialize, Deserialize)]
7pub struct TyAsmRegisterDeclaration {
8 pub initializer: Option<TyExpression>,
9 pub(crate) name: Ident,
10}
11
12impl PartialEqWithEngines for TyAsmRegisterDeclaration {
13 fn eq(&self, other: &Self, ctx: &PartialEqWithEnginesContext) -> bool {
14 self.name == other.name
15 && if let (Some(l), Some(r)) = (&self.initializer, &other.initializer) {
16 l.eq(r, ctx)
17 } else {
18 true
19 }
20 }
21}
22
23impl HashWithEngines for TyAsmRegisterDeclaration {
24 fn hash<H: Hasher>(&self, state: &mut H, engines: &Engines) {
25 let TyAsmRegisterDeclaration { initializer, name } = self;
26 name.hash(state);
27 if let Some(x) = initializer.as_ref() {
28 x.hash(state, engines)
29 }
30 }
31}
32
33impl SubstTypes for TyAsmRegisterDeclaration {
34 fn subst_inner(&mut self, ctx: &SubstTypesContext) -> HasChanges {
35 self.initializer.subst(ctx)
36 }
37}