From d67bfa80c0c7d013a99636d7959cf433000ab2e7 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 15 Apr 2023 10:43:09 +0200 Subject: Modifications due to changes in Symbols. --- pyGHDL/dom/Attribute.py | 2 +- pyGHDL/dom/Concurrent.py | 4 ++-- pyGHDL/dom/DesignUnit.py | 9 +++++---- pyGHDL/dom/NonStandard.py | 3 ++- pyGHDL/dom/Sequential.py | 4 ++-- pyGHDL/dom/Subprogram.py | 3 ++- pyGHDL/dom/Symbol.py | 10 ++++++---- pyGHDL/dom/Type.py | 3 ++- pyGHDL/dom/_Translate.py | 4 ++-- 9 files changed, 24 insertions(+), 18 deletions(-) diff --git a/pyGHDL/dom/Attribute.py b/pyGHDL/dom/Attribute.py index 7dcb7b1ef..08295817d 100644 --- a/pyGHDL/dom/Attribute.py +++ b/pyGHDL/dom/Attribute.py @@ -63,7 +63,7 @@ class Attribute(VHDLModel_Attribute, DOMMixin): subtypeMark = nodes.Get_Type_Mark(attributeNode) subtypeName = GetNameOfNode(subtypeMark) - subtype = SimpleSubtypeSymbol(subtypeMark, subtypeName) + subtype = SimpleSubtypeSymbol(subtypeMark, SimpleName(subtypeName)) return cls(attributeNode, name, subtype, documentation) diff --git a/pyGHDL/dom/Concurrent.py b/pyGHDL/dom/Concurrent.py index 4ffba28d1..303b6b96b 100644 --- a/pyGHDL/dom/Concurrent.py +++ b/pyGHDL/dom/Concurrent.py @@ -574,7 +574,7 @@ class ForGenerateStatement(VHDLModel_ForGenerateStatement, DOMMixin): @classmethod def parse(cls, generateNode: Iir, label: str) -> "ForGenerateStatement": - from pyGHDL.dom._Utils import GetIirKindOfNode + from pyGHDL.dom._Utils import GetIirKindOfNode, GetNameOfNode from pyGHDL.dom._Translate import ( GetDeclaredItemsFromChainedNodes, GetConcurrentStatementsFromChainedNodes, @@ -583,7 +583,7 @@ class ForGenerateStatement(VHDLModel_ForGenerateStatement, DOMMixin): ) spec = nodes.Get_Parameter_Specification(generateNode) - loopIndex = GetName(spec) + loopIndex = GetNameOfNode(spec) discreteRange = nodes.Get_Discrete_Range(spec) rangeKind = GetIirKindOfNode(discreteRange) diff --git a/pyGHDL/dom/DesignUnit.py b/pyGHDL/dom/DesignUnit.py index ef1a37493..9779a7ea0 100644 --- a/pyGHDL/dom/DesignUnit.py +++ b/pyGHDL/dom/DesignUnit.py @@ -66,6 +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.Names import SimpleName from pyGHDL.dom.Symbol import EntitySymbol, ContextReferenceSymbol, LibraryReferenceSymbol, PackageSymbol, PackageMemberReferenceSymbol @@ -245,11 +246,11 @@ class PackageBody(VHDLModel_PackageBody, DOMMixin): @classmethod def parse(cls, packageBodyNode: Iir, contextItems: Iterable[VHDLModel_ContextUnion]): - packageName = GetName(packageBodyNode) - packageSymbol = PackageSymbol(packageBodyNode, packageName) + packageIdentifier = GetNameOfNode(packageBodyNode) + packageSymbol = PackageSymbol(packageBodyNode, SimpleName(packageBodyNode, packageIdentifier)) documentation = GetDocumentationOfNode(packageBodyNode) declaredItems = GetDeclaredItemsFromChainedNodes( - nodes.Get_Declaration_Chain(packageBodyNode), "package", packageName + nodes.Get_Declaration_Chain(packageBodyNode), "package", packageIdentifier ) # FIXME: read use clauses @@ -309,7 +310,7 @@ class Context(VHDLModel_Context, DOMMixin): kind = GetIirKindOfNode(item) if kind is nodes.Iir_Kind.Library_Clause: libraryIdentifier = GetNameOfNode(item) - names.append(LibraryReferenceSymbol(item, libraryIdentifier)) + names.append(LibraryReferenceSymbol(item, SimpleName(item, libraryIdentifier))) if nodes.Get_Has_Identifier_List(item): continue diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index 31cc28480..d4e2fa1a5 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -40,6 +40,7 @@ import time from pathlib import Path from typing import Any +from pyGHDL.dom.Names import SimpleName from pyTooling.Decorators import export, InheritDocString from pyVHDLModel import VHDLVersion @@ -208,7 +209,7 @@ class Document(VHDLModel_Document): itemKind = GetIirKindOfNode(item) if itemKind is nodes.Iir_Kind.Library_Clause: libraryIdentifier = GetNameOfNode(item) - contextNames.append(LibraryReferenceSymbol(item, libraryIdentifier)) + contextNames.append(LibraryReferenceSymbol(item, SimpleName(item, libraryIdentifier))) if nodes.Get_Has_Identifier_List(item): continue diff --git a/pyGHDL/dom/Sequential.py b/pyGHDL/dom/Sequential.py index f289ae969..e76cdd440 100644 --- a/pyGHDL/dom/Sequential.py +++ b/pyGHDL/dom/Sequential.py @@ -335,7 +335,7 @@ class ForLoopStatement(VHDLModel_ForLoopStatement, DOMMixin): @classmethod def parse(cls, loopNode: Iir, label: str) -> "ForLoopStatement": - from pyGHDL.dom._Utils import GetIirKindOfNode + from pyGHDL.dom._Utils import GetNameOfNode, GetIirKindOfNode from pyGHDL.dom._Translate import ( GetSequentialStatementsFromChainedNodes, GetRangeFromNode, @@ -343,7 +343,7 @@ class ForLoopStatement(VHDLModel_ForLoopStatement, DOMMixin): ) spec = nodes.Get_Parameter_Specification(loopNode) - loopIndex = GetName(spec) + loopIndex = GetNameOfNode(spec) discreteRange = nodes.Get_Discrete_Range(spec) rangeKind = GetIirKindOfNode(discreteRange) diff --git a/pyGHDL/dom/Subprogram.py b/pyGHDL/dom/Subprogram.py index 17661b8b2..6bb13dcd9 100644 --- a/pyGHDL/dom/Subprogram.py +++ b/pyGHDL/dom/Subprogram.py @@ -67,6 +67,7 @@ class Function(VHDLModel_Function, DOMMixin): @classmethod def parse(cls, functionNode: Iir) -> "Function": from pyGHDL.dom._Translate import ( + GetName, GetGenericsFromChainedNodes, GetParameterFromChainedNodes, ) @@ -78,7 +79,7 @@ class Function(VHDLModel_Function, DOMMixin): parameters = GetParameterFromChainedNodes(nodes.Get_Interface_Declaration_Chain(functionNode)) returnType = nodes.Get_Return_Type_Mark(functionNode) - returnTypeName = GetNameOfNode(returnType) + returnTypeName = GetName(returnType) returnTypeSymbol = SimpleSubtypeSymbol(returnType, returnTypeName) return cls(functionNode, functionName, returnTypeSymbol, generics, parameters, documentation) diff --git a/pyGHDL/dom/Symbol.py b/pyGHDL/dom/Symbol.py index fe3f3bbe0..40e9fe55e 100644 --- a/pyGHDL/dom/Symbol.py +++ b/pyGHDL/dom/Symbol.py @@ -144,16 +144,15 @@ class PackageSymbol(VHDLModel_PackageSymbol, DOMMixin): @export class SimpleSubtypeSymbol(VHDLModel_SimpleSubtypeSymbol, DOMMixin): - def __init__(self, node: Iir, subtypeName: str): - if isinstance(subtypeName, (List, Iterator)): - subtypeName = ".".join(subtypeName) - + @InheritDocString(VHDLModel_SimpleSubtypeSymbol) + def __init__(self, node: Iir, subtypeName: Name): super().__init__(subtypeName) DOMMixin.__init__(self, node) @export class ConstrainedScalarSubtypeSymbol(VHDLModel_ConstrainedScalarSubtypeSymbol, DOMMixin): + @InheritDocString(VHDLModel_ConstrainedScalarSubtypeSymbol) def __init__(self, node: Iir, subtypeName: Name, rng: Range = None): super().__init__(subtypeName) # , rng) # XXX: hacked DOMMixin.__init__(self, node) @@ -165,6 +164,7 @@ class ConstrainedScalarSubtypeSymbol(VHDLModel_ConstrainedScalarSubtypeSymbol, D @export class ConstrainedCompositeSubtypeSymbol(VHDLModel_ConstrainedCompositeSubtypeSymbol, DOMMixin): + @InheritDocString(VHDLModel_ConstrainedCompositeSubtypeSymbol) def __init__(self, node: Iir, subtypeName: Name, constraints: List = None): super().__init__(subtypeName) # , constraints) # XXX: hacked DOMMixin.__init__(self, node) @@ -176,6 +176,7 @@ class ConstrainedCompositeSubtypeSymbol(VHDLModel_ConstrainedCompositeSubtypeSym @export class SimpleObjectOrFunctionCallSymbol(VHDLModel_SimpleObjectOrFunctionCallSymbol, DOMMixin): + @InheritDocString(VHDLModel_SimpleObjectOrFunctionCallSymbol) def __init__(self, node: Iir, name: Name): super().__init__(name) DOMMixin.__init__(self, node) @@ -191,6 +192,7 @@ class SimpleObjectOrFunctionCallSymbol(VHDLModel_SimpleObjectOrFunctionCallSymbo @export class IndexedObjectOrFunctionCallSymbol(VHDLModel_IndexedObjectOrFunctionCallSymbol, DOMMixin): + @InheritDocString(VHDLModel_IndexedObjectOrFunctionCallSymbol) def __init__(self, node: Iir, name: Name): super().__init__(name) DOMMixin.__init__(self, node) diff --git a/pyGHDL/dom/Type.py b/pyGHDL/dom/Type.py index 7df1ad7a1..98dab3af0 100644 --- a/pyGHDL/dom/Type.py +++ b/pyGHDL/dom/Type.py @@ -32,6 +32,7 @@ # ============================================================================ from typing import List, Union, Iterator, Tuple, Iterable +from pyGHDL.dom.Names import SimpleName from pyTooling.Decorators import export from pyVHDLModel.Name import Name @@ -313,7 +314,7 @@ class FileType(VHDLModel_FileType, DOMMixin): designatedSubtypeMark = nodes.Get_File_Type_Mark(typeDefinitionNode) designatedSubtypeName = GetNameOfNode(designatedSubtypeMark) - designatedSubtype = SimpleSubtypeSymbol(typeDefinitionNode, designatedSubtypeName) + designatedSubtype = SimpleSubtypeSymbol(typeDefinitionNode, SimpleName(designatedSubtypeName)) return cls(typeDefinitionNode, typeName, designatedSubtype) diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py index 8ab6283b2..97c33cf7c 100644 --- a/pyGHDL/dom/_Translate.py +++ b/pyGHDL/dom/_Translate.py @@ -322,7 +322,7 @@ def GetSubtypeIndicationFromIndicationNode(subtypeIndicationNode: Iir, entity: s @export def GetSimpleTypeFromNode(subtypeIndicationNode: Iir) -> SimpleSubtypeSymbol: subtypeName = GetName(subtypeIndicationNode) - return SimpleSubtypeSymbol(subtypeIndicationNode, str(subtypeName)) # XXX: hacked + return SimpleSubtypeSymbol(subtypeIndicationNode, subtypeName) @export @@ -340,7 +340,7 @@ def GetScalarConstrainedSubtypeFromNode( r = GetRangeFromNode(rangeConstraint) # todo: Get actual range from AttributeName node? - return ConstrainedScalarSubtypeSymbol(subtypeIndicationNode, str(simpleTypeMark), r) # XXX: hacked + return ConstrainedScalarSubtypeSymbol(subtypeIndicationNode, simpleTypeMark, r) @export -- cgit v1.2.3