[index] Introduce SymbolSubKind for reporting language-specific details.
Initially reports if a constructor symbol is a copy or move constructor. llvm-svn: 291409
This commit is contained in:
@@ -53,6 +53,7 @@ SymbolInfo index::getSymbolInfo(const Decl *D) {
|
||||
assert(D);
|
||||
SymbolInfo Info;
|
||||
Info.Kind = SymbolKind::Unknown;
|
||||
Info.SubKind = SymbolSubKind::None;
|
||||
Info.Properties = SymbolPropertySet();
|
||||
Info.Lang = SymbolLanguage::C;
|
||||
|
||||
@@ -183,10 +184,16 @@ SymbolInfo index::getSymbolInfo(const Decl *D) {
|
||||
Info.Kind = SymbolKind::NamespaceAlias;
|
||||
Info.Lang = SymbolLanguage::CXX;
|
||||
break;
|
||||
case Decl::CXXConstructor:
|
||||
case Decl::CXXConstructor: {
|
||||
Info.Kind = SymbolKind::Constructor;
|
||||
Info.Lang = SymbolLanguage::CXX;
|
||||
auto *CD = cast<CXXConstructorDecl>(D);
|
||||
if (CD->isCopyConstructor())
|
||||
Info.SubKind = SymbolSubKind::CXXCopyConstructor;
|
||||
else if (CD->isMoveConstructor())
|
||||
Info.SubKind = SymbolSubKind::CXXMoveConstructor;
|
||||
break;
|
||||
}
|
||||
case Decl::CXXDestructor:
|
||||
Info.Kind = SymbolKind::Destructor;
|
||||
Info.Lang = SymbolLanguage::CXX;
|
||||
@@ -363,6 +370,15 @@ StringRef index::getSymbolKindString(SymbolKind K) {
|
||||
llvm_unreachable("invalid symbol kind");
|
||||
}
|
||||
|
||||
StringRef index::getSymbolSubKindString(SymbolSubKind K) {
|
||||
switch (K) {
|
||||
case SymbolSubKind::None: return "<none>";
|
||||
case SymbolSubKind::CXXCopyConstructor: return "cxx-copy-ctor";
|
||||
case SymbolSubKind::CXXMoveConstructor: return "cxx-move-ctor";
|
||||
}
|
||||
llvm_unreachable("invalid symbol subkind");
|
||||
}
|
||||
|
||||
StringRef index::getSymbolLanguageString(SymbolLanguage K) {
|
||||
switch (K) {
|
||||
case SymbolLanguage::C: return "C";
|
||||
|
||||
Reference in New Issue
Block a user