[SourceKit/CursorInfo] Add constructor to call results

Cursor info for a constructor would previously give the cursor info for
the containing type only. It now also adds cursor info for the
constructor itself in a "secondary_symbols" field.

Refactor `passCursorInfoForDecl` to use a single allocator rather than
keeping track of positions in a buffer and assigning everything at the
end of the function.

Refactor the various available refactoring gathering functions to take a
SmallVectorImpl and to not copy strings where they don't need to.

Resolves rdar://75385556
This commit is contained in:
Ben Barham
2021-03-20 09:32:10 +10:00
parent 8f52c2683f
commit 3ea9bed415
21 changed files with 861 additions and 883 deletions

View File

@@ -159,10 +159,13 @@ public:
return;
}
const CursorInfoData &Info = Result.value();
TestInfo.Name = Info.Name.str();
TestInfo.Typename = Info.TypeName.str();
TestInfo.Filename = Info.Filename.str();
TestInfo.DeclarationLoc = Info.DeclarationLoc;
if (!Info.Symbols.empty()) {
const CursorSymbolInfo &MainSymbol = Info.Symbols[0];
TestInfo.Name = std::string(MainSymbol.Name.str());
TestInfo.Typename = MainSymbol.TypeName.str();
TestInfo.Filename = MainSymbol.Filename.str();
TestInfo.DeclarationLoc = MainSymbol.DeclarationLoc;
}
sema.signal();
});