1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use sway_types::{state::StateIndex, Ident, Span, Spanned};
use crate::type_system::TypeId;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TyStorageAccess {
pub fields: Vec<TyStorageAccessDescriptor>,
pub(crate) ix: StateIndex,
}
impl Spanned for TyStorageAccess {
fn span(&self) -> Span {
self.fields
.iter()
.fold(self.fields[0].span.clone(), |acc, field| {
Span::join(acc, field.span.clone())
})
}
}
impl TyStorageAccess {
pub fn storage_field_name(&self) -> Ident {
self.fields[0].name.clone()
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TyStorageAccessDescriptor {
pub name: Ident,
pub(crate) type_id: TypeId,
pub(crate) span: Span,
}