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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use crate::{crate_prelude::*, mir::Rvalue, ty::Type, ParamEnv};
use std::collections::HashMap;
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct Lvalue<'a> {
pub id: NodeId,
pub origin: NodeId,
pub env: ParamEnv,
pub span: Span,
pub ty: Type<'a>,
pub kind: LvalueKind<'a>,
}
#[derive(Debug, Clone, Eq, PartialEq)]
#[allow(missing_docs)]
pub enum LvalueKind<'a> {
DestructArray(HashMap<usize, &'a Lvalue<'a>>),
DestructStruct(Vec<&'a Lvalue<'a>>),
Var(NodeId),
Port(NodeId),
Index {
value: &'a Lvalue<'a>,
base: &'a Rvalue<'a>,
length: usize,
},
Member { value: &'a Lvalue<'a>, field: usize },
Error,
}