public async Task<Symbol> GetSymbolAsync(ISourceFile file, List<UnsavedFile> unsavedFiles, int offset)
{
Symbol result = null;
var associatedData = GetAssociatedData(file);
await clangAccessJobRunner.InvokeAsync(() =>
{
var tu = associatedData.TranslationUnit;
var cursor = tu.GetCursor(tu.GetLocationForOffset(tu.GetFile(file.FilePath), offset));
switch (cursor.Kind)
{
case NClang.CursorKind.MemberReferenceExpression:
case NClang.CursorKind.DeclarationReferenceExpression:
case NClang.CursorKind.CallExpression:
case NClang.CursorKind.TypeReference:
cursor = cursor.Referenced;
break;
}
result = SymbolFromClangCursor(cursor);
});
return result;
}