Update SyntaxTable again
This commit is contained in:
parent
afd3edfe79
commit
1dde3554d1
|
@ -163,8 +163,7 @@ impl AlwaysStatement {
|
|||
let value = builder.arg_value(*arg);
|
||||
context
|
||||
.syntax_table
|
||||
.values
|
||||
.insert((builder.unit().id(), value), json);
|
||||
.insert_value(builder.unit().id(), value, json);
|
||||
builder.set_name(value, name.clone());
|
||||
arg_value_to_raw_name.insert(value, name.clone());
|
||||
raw_name_to_value.insert(name.clone(), value);
|
||||
|
|
|
@ -34,8 +34,8 @@ pub struct UnitContext {
|
|||
|
||||
pub struct SyntaxTable<'a> {
|
||||
pub root: &'a JsonValue,
|
||||
pub values: HashMap<(UnitId, Value), &'a JsonValue>,
|
||||
pub insts: HashMap<(UnitId, Inst), &'a JsonValue>,
|
||||
pub values: HashMap<UnitId, HashMap<Value, &'a JsonValue>>,
|
||||
pub insts: HashMap<UnitId, HashMap<Inst, &'a JsonValue>>,
|
||||
}
|
||||
|
||||
pub struct SymbolInfo {
|
||||
|
@ -145,6 +145,24 @@ impl<'a> SyntaxTable<'a> {
|
|||
insts: HashMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn insert_value(&mut self, unit_id: UnitId, value: Value, json: &'a JsonValue) {
|
||||
if !self.values.contains_key(&unit_id) {
|
||||
self.values.insert(unit_id, HashMap::new());
|
||||
}
|
||||
if let Some(x) = self.values.get_mut(&unit_id) {
|
||||
(*x).insert(value, json);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn insert_inst(&mut self, unit_id: UnitId, inst: Inst, json: &'a JsonValue) {
|
||||
if !self.insts.contains_key(&unit_id) {
|
||||
self.insts.insert(unit_id, HashMap::new());
|
||||
}
|
||||
if let Some(x) = self.insts.get_mut(&unit_id) {
|
||||
(*x).insert(inst, json);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SymbolInfo {
|
||||
|
|
|
@ -220,8 +220,7 @@ impl Expression {
|
|||
if value.is_some() {
|
||||
context
|
||||
.syntax_table
|
||||
.values
|
||||
.insert((builder.unit().id(), value.unwrap()), json);
|
||||
.insert_value(builder.unit().id(), value.unwrap(), json);
|
||||
}
|
||||
value
|
||||
} else {
|
||||
|
|
|
@ -88,8 +88,7 @@ impl NetVariableAssignment {
|
|||
);
|
||||
context
|
||||
.syntax_table
|
||||
.insts
|
||||
.insert((builder.unit().id(), inst), json);
|
||||
.insert_inst(builder.unit().id(), inst, json);
|
||||
if unit_ctx.raw_name_to_shadow.contains_key(lvalue_name) {
|
||||
warn!("TODO: double check");
|
||||
builder.ins().st(
|
||||
|
|
|
@ -70,8 +70,7 @@ impl NonblockingAssignmentStatement {
|
|||
);
|
||||
context
|
||||
.syntax_table
|
||||
.insts
|
||||
.insert((builder.unit().id(), inst), json);
|
||||
.insert_inst(builder.unit().id(), inst, json);
|
||||
|
||||
Some(bb_head)
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue