From bee2616e7fed89c042f79592ddfafa2f6aea451e Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 14 Apr 2023 07:42:22 +0200 Subject: Fixes due to failing testcases. --- pyGHDL/dom/Concurrent.py | 14 +++++++------- pyGHDL/dom/DesignUnit.py | 14 +++++++++----- pyGHDL/dom/Symbol.py | 8 ++++++++ pyGHDL/dom/Type.py | 4 ++-- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/pyGHDL/dom/Concurrent.py b/pyGHDL/dom/Concurrent.py index 71ee634cc..4ffba28d1 100644 --- a/pyGHDL/dom/Concurrent.py +++ b/pyGHDL/dom/Concurrent.py @@ -115,9 +115,9 @@ class ComponentInstantiation(VHDLModel_ComponentInstantiation, DOMMixin): @classmethod def parse(cls, instantiationNode: Iir, instantiatedUnit: Iir, label: str) -> "ComponentInstantiation": - from pyGHDL.dom._Translate import GetGenericMapAspect, GetPortMapAspect + from pyGHDL.dom._Translate import GetName, GetGenericMapAspect, GetPortMapAspect - componentSymbol = GetComponentInstantiationSymbol(instantiatedUnit) + componentSymbol = ComponentInstantiationSymbol(instantiatedUnit, GetName(instantiatedUnit)) genericAssociations = GetGenericMapAspect(nodes.Get_Generic_Map_Aspect_Chain(instantiationNode)) portAssociations = GetPortMapAspect(nodes.Get_Port_Map_Aspect_Chain(instantiationNode)) @@ -142,8 +142,8 @@ class EntityInstantiation(VHDLModel_EntityInstantiation, DOMMixin): def parse(cls, instantiationNode: Iir, instantiatedUnit: Iir, label: str) -> "EntityInstantiation": from pyGHDL.dom._Translate import GetName, GetGenericMapAspect, GetPortMapAspect - entityId = nodes.Get_Entity_Name(instantiatedUnit) - entitySymbol = GetEntityInstantiationSymbol(entityId) + entityName = nodes.Get_Entity_Name(instantiatedUnit) + entitySymbol = EntityInstantiationSymbol(entityName, GetName(entityName)) architectureSymbol = None architectureId = nodes.Get_Architecture(instantiatedUnit) @@ -171,10 +171,10 @@ class ConfigurationInstantiation(VHDLModel_ConfigurationInstantiation, DOMMixin) @classmethod def parse(cls, instantiationNode: Iir, instantiatedUnit: Iir, label: str) -> "ConfigurationInstantiation": - from pyGHDL.dom._Translate import GetGenericMapAspect, GetPortMapAspect + from pyGHDL.dom._Translate import GetName, GetGenericMapAspect, GetPortMapAspect - configurationId = nodes.Get_Configuration_Name(instantiatedUnit) - configurationSymbol = GetConfigurationInstantiationSymbol(configurationId) + configurationName = nodes.Get_Configuration_Name(instantiatedUnit) + configurationSymbol = ConfigurationInstantiationSymbol(configurationName, GetName(configurationName)) genericAssociations = GetGenericMapAspect(nodes.Get_Generic_Map_Aspect_Chain(instantiationNode)) portAssociations = GetPortMapAspect(nodes.Get_Port_Map_Aspect_Chain(instantiationNode)) diff --git a/pyGHDL/dom/DesignUnit.py b/pyGHDL/dom/DesignUnit.py index 6484d1532..ef1a37493 100644 --- a/pyGHDL/dom/DesignUnit.py +++ b/pyGHDL/dom/DesignUnit.py @@ -66,7 +66,7 @@ from pyGHDL.dom import DOMMixin, Position, DOMException from pyGHDL.dom._Utils import GetNameOfNode, GetDocumentationOfNode, GetPackageMemberSymbol from pyGHDL.dom._Translate import GetGenericsFromChainedNodes, GetPortsFromChainedNodes, GetName from pyGHDL.dom._Translate import GetDeclaredItemsFromChainedNodes, GetConcurrentStatementsFromChainedNodes -from pyGHDL.dom.Symbol import EntitySymbol, ContextReferenceSymbol, LibraryReferenceSymbol, PackageSymbol +from pyGHDL.dom.Symbol import EntitySymbol, ContextReferenceSymbol, LibraryReferenceSymbol, PackageSymbol, PackageMemberReferenceSymbol @export @@ -84,9 +84,11 @@ class UseClause(VHDLModel_UseClause, DOMMixin): @classmethod def parse(cls, useNode: Iir): - uses = [GetPackageMemberSymbol(nodes.Get_Selected_Name(useNode))] + nameNode = nodes.Get_Selected_Name(useNode) + uses = [PackageMemberReferenceSymbol(nameNode, GetName(nameNode))] for use in utils.chain_iter(nodes.Get_Use_Clause_Chain(useNode)): - uses.append(GetPackageMemberSymbol(nodes.Get_Selected_Name(use))) + nameNode = nodes.Get_Selected_Name(use) + uses.append(PackageMemberReferenceSymbol(nameNode, GetName(nameNode))) return cls(useNode, uses) @@ -99,9 +101,11 @@ class ContextReference(VHDLModel_ContextReference, DOMMixin): @classmethod def parse(cls, contextNode: Iir): - contexts = [GetContextSymbol(nodes.Get_Selected_Name(contextNode))] + nameNode = nodes.Get_Selected_Name(contextNode) + contexts = [ContextReferenceSymbol(nameNode, GetName(nameNode))] for context in utils.chain_iter(nodes.Get_Context_Reference_Chain(contextNode)): - contexts.append(GetContextSymbol(nodes.Get_Selected_Name(context))) + nameNode = nodes.Get_Selected_Name(context) + contexts.append(ContextReferenceSymbol(nameNode, GetName(nameNode))) return cls(contextNode, contexts) diff --git a/pyGHDL/dom/Symbol.py b/pyGHDL/dom/Symbol.py index 7c29acf06..fe3f3bbe0 100644 --- a/pyGHDL/dom/Symbol.py +++ b/pyGHDL/dom/Symbol.py @@ -82,6 +82,14 @@ class ContextReferenceSymbol(VHDLModel_ContextReferenceSymbol, DOMMixin): DOMMixin.__init__(self, identifierNode) +@export +class PackageMemberReferenceSymbol(VHDLModel_PackageMembersReferenceSymbol, DOMMixin): + @InheritDocString(VHDLModel_PackageMembersReferenceSymbol) + def __init__(self, identifierNode: Iir, name: Name): + super().__init__(name) + DOMMixin.__init__(self, identifierNode) + + @export class EntityInstantiationSymbol(VHDLModel_EntityInstantiationSymbol, DOMMixin): @InheritDocString(VHDLModel_EntityInstantiationSymbol) diff --git a/pyGHDL/dom/Type.py b/pyGHDL/dom/Type.py index e7d9701fd..7df1ad7a1 100644 --- a/pyGHDL/dom/Type.py +++ b/pyGHDL/dom/Type.py @@ -114,7 +114,7 @@ class PhysicalType(VHDLModel_PhysicalType, DOMMixin): @classmethod def parse(cls, typeName: str, typeDefinitionNode: Iir) -> "PhysicalType": from pyGHDL.dom._Utils import GetIirKindOfNode, GetNameOfNode - from pyGHDL.dom._Translate import GetRangeFromNode, GetNameFromNode + from pyGHDL.dom._Translate import GetRangeFromNode, GetName rangeConstraint = nodes.Get_Range_Constraint(typeDefinitionNode) rangeKind = GetIirKindOfNode(rangeConstraint) @@ -124,7 +124,7 @@ class PhysicalType(VHDLModel_PhysicalType, DOMMixin): nodes.Iir_Kind.Attribute_Name, nodes.Iir_Kind.Parenthesis_Name, ): - rng = GetNameFromNode(rangeConstraint) + rng = GetName(rangeConstraint) else: pos = Position.parse(typeDefinitionNode) raise DOMException(f"Unknown range kind '{rangeKind.name}' in physical type definition at line {pos.Line}.") -- cgit v1.2.3