Предположим, что я могу посетить все выражения вызова функции в файле 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