clang无法在TranslationUnitDecl的不同子节点中获得父节点

时间:2018-10-20 05:16:56

标签: c++ clang clang++ llvm-clang

我试图在 Visitor 中获取 CallExpr 的节点的父级。 我正在使用的代码如下,

int dummy()
{     
  return 0;   
}

namespace
{
    void a()
    {        
       dummy();       
    }

    int b()
    {     
       return dummy();   
    }
} // end of unnamed namespace

void c()
{    
  dummy();   
}

但是,在功能 VisitCallExpr 中,我只能在功能 a 中获得 CallExpr (虚拟)的父节点。和 b ,如果删除命名空间,则只能在函数 a 中获得父节点。我应该怎么做才能得到 dummy 的所有调用的父节点?

如果我删除命名空间,则只有函数a()中的dummy()具有父节点。 使用namespce,a()和b()将位于TranslationUnitDecl的同一子节点中,并且两个函数中的dummy()都有父节点。但是函数c()中的dummy()都没有父节点。我使用ASTContext :: getParents()查找dummy()的父节点。

0 个答案:

没有答案