Author: ibiryukov Date: Mon Feb 19 04:35:33 2018 New Revision: 325490 URL: http://llvm.org/viewvc/llvm-project?rev=325490&view=rev Log: [CodeComplete] Add a helper to print CodeCompletionContext::Kind
Summary: Will be used in clangd. See D43377. Reviewers: sammccall Reviewed By: sammccall Subscribers: ioeric, cfe-commits Differential Revision: https://reviews.llvm.org/D43379 Modified: cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp Modified: cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h?rev=325490&r1=325489&r2=325490&view=diff ============================================================================== --- cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h (original) +++ cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h Mon Feb 19 04:35:33 2018 @@ -351,6 +351,9 @@ public: } }; +/// \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. /// Modified: cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp?rev=325490&r1=325489&r2=325490&view=diff ============================================================================== --- cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp (original) +++ cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp Mon Feb 19 04:35:33 2018 @@ -76,6 +76,81 @@ bool CodeCompletionContext::wantConstruc 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 //===----------------------------------------------------------------------===// _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits