From 255f5de820ada16653d5a76fc5a85aa5c8008c6f Mon Sep 17 00:00:00 2001 From: c-thaler Date: Mon, 3 Apr 2023 23:52:29 +0200 Subject: pyGHDL: fix range handling in subtype indication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to §3.1, range can be a range expression or an attribute name. This must be respected when accessing the fields of the node. --- pyGHDL/dom/_Translate.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py index 146c3443a..54c52614c 100644 --- a/pyGHDL/dom/_Translate.py +++ b/pyGHDL/dom/_Translate.py @@ -334,7 +334,13 @@ def GetScalarConstrainedSubtypeFromNode( typeMarkName = GetNameOfNode(typeMark) simpleTypeMark = SimpleName(typeMark, typeMarkName) rangeConstraint = nodes.Get_Range_Constraint(subtypeIndicationNode) - r = GetRangeFromNode(rangeConstraint) + + r = None + # Check if RangeExpression. Might also be an AttributeName (see §3.1) + if GetIirKindOfNode(rangeConstraint) == nodes.Iir_Kind.Range_Expression: + r = GetRangeFromNode(rangeConstraint) + #todo: Get actual range from AttributeName node? + return ConstrainedScalarSubtypeSymbol(subtypeIndicationNode, str(simpleTypeMark), r) # XXX: hacked -- cgit v1.2.3