From 2b3bf5f51df1def7c541db87abeb4cb7eef47cb8 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Mon, 15 Sep 2025 20:19:16 -0400 Subject: [PATCH] Fix false missing implementation warning. --- src/V3LinkDot.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp index e6e248ded..b97d192a9 100644 --- a/src/V3LinkDot.cpp +++ b/src/V3LinkDot.cpp @@ -2686,7 +2686,8 @@ class LinkDotResolveVisitor final : public VNVisitor { const AstNodeFTask* const baseFuncp = VN_CAST(baseSubp, NodeFTask); if (!baseFuncp || !baseFuncp->pureVirtual()) continue; bool existsInDerived = foundp && !foundp->imported(); - if (!existsInDerived && !derivedClassp->isInterfaceClass()) { + if (m_statep->forPrimary() && !existsInDerived + && !derivedClassp->isInterfaceClass()) { derivedClassp->v3error( "Class " << derivedClassp->prettyNameQ() << impOrExtends << baseClassp->prettyNameQ() @@ -2698,7 +2699,8 @@ class LinkDotResolveVisitor final : public VNVisitor { << baseSubp->warnContextSecondary()); } const auto itn = m_ifClassImpNames.find(baseSubp->name()); - if (!existsInDerived && itn != m_ifClassImpNames.end() + if (m_statep->forPrimary() && !existsInDerived + && itn != m_ifClassImpNames.end() && itn->second != baseSubp) { // Not exact same function from diamond derivedClassp->v3error( "Class " << derivedClassp->prettyNameQ() << impOrExtends @@ -2717,8 +2719,8 @@ class LinkDotResolveVisitor final : public VNVisitor { const AstConstraint* const baseFuncp = VN_CAST(baseSubp, Constraint); if (!baseFuncp || !baseFuncp->isKwdPure()) continue; bool existsInDerived = foundp && !foundp->imported(); - if (!existsInDerived && !derivedClassp->isInterfaceClass() - && !derivedClassp->isVirtual()) { + if (m_statep->forPrimary() && !existsInDerived + && !derivedClassp->isInterfaceClass() && !derivedClassp->isVirtual()) { derivedClassp->v3error( "Class " << derivedClassp->prettyNameQ() << impOrExtends << baseClassp->prettyNameQ()