Internals: Relax requirements for AstClass iteration methods (#5335)

Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
This commit is contained in:
Krzysztof Bieganski 2024-08-09 11:05:52 +02:00 committed by GitHub
parent ec0815e9ac
commit b100615726
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 6 deletions

View File

@ -2503,7 +2503,7 @@ protected:
static void dumpJsonStr(std::ostream& os, const std::string& name, const std::string& val); static void dumpJsonStr(std::ostream& os, const std::string& name, const std::string& val);
static void dumpJsonPtr(std::ostream& os, const std::string& name, const AstNode* const valp); static void dumpJsonPtr(std::ostream& os, const std::string& name, const AstNode* const valp);
private: protected:
void iterateListBackwardsConst(VNVisitorConst& v); void iterateListBackwardsConst(VNVisitorConst& v);
// For internal use only. // For internal use only.

View File

@ -2353,9 +2353,7 @@ public:
extendsp->classp()->foreachMember(f); extendsp->classp()->foreachMember(f);
} }
for (AstNode* stmtp = stmtsp(); stmtp; stmtp = stmtp->nextp()) { for (AstNode* stmtp = stmtsp(); stmtp; stmtp = stmtp->nextp()) {
if (T_Node* memberp = AstNode::privateCast<T_Node, decltype(stmtp)>(stmtp)) { if (AstNode::privateTypeTest<T_Node>(stmtp)) f(this, static_cast<T_Node*>(stmtp));
f(this, memberp);
}
} }
} }
// Same as above, but stops after first match // Same as above, but stops after first match
@ -2370,8 +2368,8 @@ public:
if (extendsp->classp()->existsMember(p)) return true; if (extendsp->classp()->existsMember(p)) return true;
} }
for (AstNode* stmtp = stmtsp(); stmtp; stmtp = stmtp->nextp()) { for (AstNode* stmtp = stmtsp(); stmtp; stmtp = stmtp->nextp()) {
if (T_Node* memberp = AstNode::privateCast<T_Node, decltype(stmtp)>(stmtp)) { if (AstNode::privateTypeTest<T_Node>(stmtp)) {
if (p(this, memberp)) return true; if (p(this, static_cast<T_Node*>(stmtp))) return true;
} }
} }
return false; return false;