clang не может получить родительский узел в разных дочерних узлах TranslationUnitDecl - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь получить родительский узел для CallExpr в посетителя .Код, который я работаю, выглядит следующим образом:

int dummy()
{     
  return 0;   
}

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

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

void c()
{    
  dummy();   
}

Однако в функции VisitCallExpr Я могу получить только родительский узел CallExpr (пустышка) в функции a и b , и если я удалю namespace , я могу получить только родительский узел в функции a .Что я должен сделать, чтобы получить родительский узел для всех вызовов dummy ?

Если я удаляю пространство имен, только dummy () в функции a () имеет родительский узел.При использовании namespce a () и b () будут находиться в одном и том же дочернем узле TranslationUnitDecl, а dummy () в обеих функциях имеет родительские узлы.Но dummy () в функции c () ни в коем случае не имеет родительского узла.Я использую ASTContext :: getParents (), чтобы найти родительский узел dummy ().

...