From a1bae47cd33d19a5288b65bb6e0161022f43541e Mon Sep 17 00:00:00 2001 From: Ryszard Rozak Date: Mon, 23 Feb 2026 15:42:35 +0100 Subject: [PATCH] Add typedef Signed-off-by: Ryszard Rozak --- src/V3AstNodeOther.h | 9 +++++++++ src/V3Force.cpp | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/V3AstNodeOther.h b/src/V3AstNodeOther.h index 4a2e03f65..e13282fcc 100644 --- a/src/V3AstNodeOther.h +++ b/src/V3AstNodeOther.h @@ -1778,6 +1778,15 @@ public: addAttrsp(attrsp); dtypep(nullptr); // V3Width will resolve } + AstTypedef(FileLine* fl, const string& name, AstNodeDType* dtp, bool underClass) + : ASTGEN_SUPER_Typedef(fl) + , m_name{name} + , m_declTokenNum{fl->tokenNum()} + , m_isHideLocal{false} + , m_isHideProtected{false} + , m_isUnderClass{underClass} { + dtypep(dtp); + } ASTGEN_MEMBERS_AstTypedef; void dump(std::ostream& str) const override; void dumpJson(std::ostream& str) const override; diff --git a/src/V3Force.cpp b/src/V3Force.cpp index 7a53f013c..2236775bd 100644 --- a/src/V3Force.cpp +++ b/src/V3Force.cpp @@ -288,8 +288,7 @@ private: return 1; } } - static AstNodeDType* getEnVarpDTypeRecursep(const AstVar* const varp, - AstNodeDType* const dtypep) { + static AstNodeDType* getEnVarpDTypeRecursep(AstVar* const varp, AstNodeDType* const dtypep) { if (dtypep->user1p()) return VN_AS(dtypep->user1p(), NodeDType); const size_t unpackElemNum = checkIfDTypeSupportedRecurse(dtypep, varp); if (unpackElemNum > ELEMENTS_MAX) { @@ -361,6 +360,10 @@ private: enStructp->dtypep(enStructp); enStructp->classOrPackagep(structp->classOrPackagep()); dtypep->user1p(enStructp); + AstTypedef* const typedefp + = new AstTypedef{enStructp->fileline(), enStructp->name(), enStructp, + VN_IS(enStructp->classOrPackagep(), Class)}; + varp->addNextHere(typedefp); return enStructp; } else { for (const auto& memberp : enMemberDTypes) memberp->deleteTree();