hdl.rec: include record name in error message.

This commit is contained in:
whitequark 2019-01-01 03:39:12 +00:00
parent 031a9e2616
commit 3c07d8d52c
2 changed files with 16 additions and 3 deletions

View file

@ -93,8 +93,12 @@ class Record(Value):
try:
return self.fields[name]
except KeyError:
raise NameError("Record does not have a field '{}'. Did you mean one of: {}?"
.format(name, ", ".join(self.fields))) from None
if self.name is None:
reference = "Unnamed record"
else:
reference = "Record '{}'".format(self.name)
raise NameError("{} does not have a field '{}'. Did you mean one of: {}?"
.format(reference, name, ", ".join(self.fields))) from None
def shape(self):
return sum(len(f) for f in self.fields.values()), False

View file

@ -85,5 +85,14 @@ class RecordTestCase(FHDLTestCase):
("ack", 1),
])
with self.assertRaises(NameError,
msg="Record does not have a field 'en'. Did you mean one of: stb, ack?"):
msg="Record 'r' does not have a field 'en'. Did you mean one of: stb, ack?"):
r.en
def test_wrong_field_unnamed(self):
r = [Record([
("stb", 1),
("ack", 1),
])][0]
with self.assertRaises(NameError,
msg="Unnamed record does not have a field 'en'. Did you mean one of: stb, ack?"):
r.en