Skip to content

Commit

Permalink
[CodeComplete] Add a helper to print CodeCompletionContext::Kind
Browse files Browse the repository at this point in the history
Summary: Will be used in clangd. See D43377.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: ioeric, cfe-commits

Differential Revision: https://reviews.llvm.org/D43379

llvm-svn: 325490
  • Loading branch information
ilya-biryukov committed Feb 19, 2018
1 parent 110ecc7 commit 27d8258
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
3 changes: 3 additions & 0 deletions clang/include/clang/Sema/CodeCompleteConsumer.h
Expand Up @@ -351,6 +351,9 @@ class CodeCompletionContext {
}
};

/// \brief Get string representation of \p Kind, useful for for debugging.
llvm::StringRef getCompletionKindString(enum CodeCompletionContext::Kind Kind);

/// \brief A "string" used to describe how code completion can
/// be performed for an entity.
///
Expand Down
75 changes: 75 additions & 0 deletions clang/lib/Sema/CodeCompleteConsumer.cpp
Expand Up @@ -76,6 +76,81 @@ bool CodeCompletionContext::wantConstructorResults() const {
llvm_unreachable("Invalid CodeCompletionContext::Kind!");
}

StringRef clang::getCompletionKindString(enum CodeCompletionContext::Kind Kind) {
using CCKind = enum CodeCompletionContext::Kind;
switch (Kind) {
case CCKind::CCC_Other:
return "Other";
case CCKind::CCC_OtherWithMacros:
return "OtherWithMacros";
case CCKind::CCC_TopLevel:
return "TopLevel";
case CCKind::CCC_ObjCInterface:
return "ObjCInterface";
case CCKind::CCC_ObjCImplementation:
return "ObjCImplementation";
case CCKind::CCC_ObjCIvarList:
return "ObjCIvarList";
case CCKind::CCC_ClassStructUnion:
return "ClassStructUnion";
case CCKind::CCC_Statement:
return "Statement";
case CCKind::CCC_Expression:
return "Expression";
case CCKind::CCC_ObjCMessageReceiver:
return "ObjCMessageReceiver";
case CCKind::CCC_DotMemberAccess:
return "DotMemberAccess";
case CCKind::CCC_ArrowMemberAccess:
return "ArrowMemberAccess";
case CCKind::CCC_ObjCPropertyAccess:
return "ObjCPropertyAccess";
case CCKind::CCC_EnumTag:
return "EnumTag";
case CCKind::CCC_UnionTag:
return "UnionTag";
case CCKind::CCC_ClassOrStructTag:
return "ClassOrStructTag";
case CCKind::CCC_ObjCProtocolName:
return "ObjCProtocolName";
case CCKind::CCC_Namespace:
return "Namespace";
case CCKind::CCC_Type:
return "Type";
case CCKind::CCC_Name:
return "Name";
case CCKind::CCC_PotentiallyQualifiedName:
return "PotentiallyQualifiedName";
case CCKind::CCC_MacroName:
return "MacroName";
case CCKind::CCC_MacroNameUse:
return "MacroNameUse";
case CCKind::CCC_PreprocessorExpression:
return "PreprocessorExpression";
case CCKind::CCC_PreprocessorDirective:
return "PreprocessorDirective";
case CCKind::CCC_NaturalLanguage:
return "NaturalLanguage";
case CCKind::CCC_SelectorName:
return "SelectorName";
case CCKind::CCC_TypeQualifiers:
return "TypeQualifiers";
case CCKind::CCC_ParenthesizedExpression:
return "ParenthesizedExpression";
case CCKind::CCC_ObjCInstanceMessage:
return "ObjCInstanceMessage";
case CCKind::CCC_ObjCClassMessage:
return "ObjCClassMessage";
case CCKind::CCC_ObjCInterfaceName:
return "ObjCInterfaceName";
case CCKind::CCC_ObjCCategoryName:
return "ObjCCategoryName";
case CCKind::CCC_Recovery:
return "Recovery";
}
llvm_unreachable("Invalid CodeCompletionContext::Kind!");
}

//===----------------------------------------------------------------------===//
// Code completion string implementation
//===----------------------------------------------------------------------===//
Expand Down

0 comments on commit 27d8258

Please sign in to comment.