sway_core/language/ty/expression/
asm.rs

1use 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}