Skip to content

Commit ae044cc

Browse files
committed
Cleanup/fixup of nested-reference handling
Signed-off-by: Matthew Ballance <matt.ballance@gmail.com>
1 parent 1061db1 commit ae044cc

File tree

4 files changed

+13
-2
lines changed

4 files changed

+13
-2
lines changed

src/vsc/model/expr_indexed_field_ref_model.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,24 @@ def get_target(self, root=None):
2727
ret = root
2828
elif isinstance(self.root, ExprArraySubscriptModel):
2929
ret = self.root.subscript()
30+
elif isinstance(self.root, ExprIndexedFieldRefModel):
31+
from vsc.visitors.expr2field_visitor import Expr2FieldVisitor
32+
fm = Expr2FieldVisitor().field(self.root)
33+
ret = fm
3034
else:
3135
ret = self.root.fm
3236

3337
for i in self.idx_t:
3438
ret = ret.get_field(i)
35-
39+
3640
return ret
3741

3842

3943
def build(self, btor, ctx_width=-1):
4044
t = self.get_target()
4145
ret = t.build(btor)
46+
if ret is None:
47+
raise Exception("Expression %s produced null node" % str(t))
4248
return ret
4349

4450
def is_signed(self):

src/vsc/types.py

+4
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ def __getattr__(self, name):
180180
em = object.__getattribute__(self, "em")
181181
fm_t = Expr2FieldTypeVisitor().fieldtype(em)
182182

183+
# This pops 'this expr' off the stack, so we can
184+
# replace it with an extended expression
185+
pop_expr()
186+
183187
if fm_t is not None:
184188
if name in fm_t.field_id_m.keys():
185189
idx = fm_t.field_id_m[name]

src/vsc/visitors/expr2fieldtype_visitor.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
class Expr2FieldTypeVisitor(ModelVisitor):
1313
"""Traverses an array-reference expression, returning element-type information"""
1414

15-
DEBUG_EN = True
15+
DEBUG_EN = False
1616

1717
def __init__(self):
1818
super().__init__()

ve/unit/test_compound_obj.py

+1
Original file line numberDiff line numberDiff line change
@@ -571,3 +571,4 @@ def eq_c(self):
571571

572572

573573
item = Parent()
574+
item.randomize(debug=False)

0 commit comments

Comments
 (0)