hdl.rec: include record name in error message.
This commit is contained in:
parent
031a9e2616
commit
3c07d8d52c
|
@ -93,8 +93,12 @@ class Record(Value):
|
||||||
try:
|
try:
|
||||||
return self.fields[name]
|
return self.fields[name]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise NameError("Record does not have a field '{}'. Did you mean one of: {}?"
|
if self.name is None:
|
||||||
.format(name, ", ".join(self.fields))) from 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):
|
def shape(self):
|
||||||
return sum(len(f) for f in self.fields.values()), False
|
return sum(len(f) for f in self.fields.values()), False
|
||||||
|
|
|
@ -85,5 +85,14 @@ class RecordTestCase(FHDLTestCase):
|
||||||
("ack", 1),
|
("ack", 1),
|
||||||
])
|
])
|
||||||
with self.assertRaises(NameError,
|
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
|
r.en
|
||||||
|
|
Loading…
Reference in a new issue