如何获取函数';s结果类型';s源在clang AST中的位置

如何获取函数';s结果类型';s源在clang AST中的位置,clang,Clang,我一直在尝试使用libtooling重命名源代码中的类,但遇到了一个问题wrt函数returns:似乎没有一个API来获取返回类型的源代码范围 我可以通过假设返回类型在函数id之前来解决这个问题,但是在C++11中这不能处理后面的返回类型。 有人有更好的建议吗 谢谢 // simplified example replacing only value type returns virtual void run(const ast_matchers::MatchFinder::MatchResul

我一直在尝试使用libtooling重命名源代码中的类,但遇到了一个问题wrt函数returns:似乎没有一个API来获取返回类型的源代码范围

我可以通过假设返回类型在函数id之前来解决这个问题,但是在C++11中这不能处理后面的返回类型。 有人有更好的建议吗

谢谢

// simplified example replacing only value type returns
virtual void run(const ast_matchers::MatchFinder::MatchResult& Result) {
    SourceManager& src = *result_.SourceManager;
    const FunctionDecl* const function =
        result_.Nodes.getDeclAs<FunctionDecl>("function");

    CharSourceRange range = Lexer::makeFileCharRange(
        CharSourceRange::getTokenRange(function->getLocStart(), 
        function->getLocation.getLocWithOffset(-1)),
        src, LangOptions());
    _replace->insert(Replacement(src, range, "newClass));
}
//仅替换值类型返回的简化示例
虚拟无效运行(常量ast_matchers::MatchFinder::MatchResult&Result){
SourceManager&src=*result\uu.SourceManager;
常量函数decl*常量函数=
结果uu.Nodes.getDeclAs(“函数”);
CharSourceRange=Lexer::makeFileCharRange(
CharSourceRange::getTokenRange(函数->getLocStart(),
函数->getLocation.getLocWithOffset(-1)),
src,LangOptions());
_替换->插入(替换(src,范围,“新类”);
}
functionDecl拥有和作为成员函数。