Получить объявление функции из выражения вызова функции eclipse cdt - PullRequest
0 голосов
/ 09 января 2019

Предположим, что я могу посетить все выражения вызова функции в файле c, что мне нужно, чтобы получить узел определения функции для этого вызова функции, определение функции может быть в другом файле C, я попробовал код ниже

@Override
protected int visit(IASTFunctionCallExpression functionCall) {

    IASTExpression functionNameExp = functionCallExp.getFunctionNameExpression();
        IASTName fn = ((IASTIdExpression) functionNameExp).getName() ;
        IBinding binding = fn.resolveBinding(); //binding is retrieved successfully 
        IName[] defs = ast.getDefinitions(binding);
        for(IName def : definitions) {
             //I want to get the function definition node in the other file
        }
}

но когда я пытаюсь оценить "defs" в режиме отладки, появляется сообщение об ошибке

org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.

Есть предложения?

UPDATE

Мне удалось преодолеть это исключение, пересоздав индекс проекта.

Проблема произошла в методе CIndex # findNames в функции return: вернуть result.toArray (new IIndexName [result.size ()]); Несмотря на то, что размер результата будет равен нулю, он будет через это исключение, я заметил, что этот стиль возврата широко использовался в классе CIndex

HighCommander4

...