我使用来自lang :: RecursiveASTVisitor的子类来遍历clang AST并将函数从一个名称重命名为另一个名称。我使用rewriter类
/// \brief rename function declarations
virtual bool VisitFunctionDecl(clang::FunctionDecl *func) {
std::string funcName = func->getNameInfo().getName().getAsString();
if (funcName == _nameFrom) {
_rewriter.ReplaceText(func->getLocation(), (int)funcName.length(), _nameTo);
}
return true;
}
和类似的函数调用。
但是这种方法重命名源代码中的函数。我可以获得新版本的代码(使用新的函数名称),但当前ast节点的名称仍然相同。我可以以某种方式重命名ast节点吗?