r242039 - clang-format: Print token type name instead of number in -debug output
Birunthan Mohanathas
birunthan at mohanathas.com
Mon Jul 13 09:19:34 PDT 2015
Author: poiru
Date: Mon Jul 13 11:19:34 2015
New Revision: 242039
URL: http://llvm.org/viewvc/llvm-project?rev=242039&view=rev
Log:
clang-format: Print token type name instead of number in -debug output
Differential Revision: http://reviews.llvm.org/D11125
Modified:
cfe/trunk/lib/Format/FormatToken.cpp
cfe/trunk/lib/Format/FormatToken.h
cfe/trunk/lib/Format/TokenAnnotator.cpp
Modified: cfe/trunk/lib/Format/FormatToken.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/FormatToken.cpp?rev=242039&r1=242038&r2=242039&view=diff
==============================================================================
--- cfe/trunk/lib/Format/FormatToken.cpp (original)
+++ cfe/trunk/lib/Format/FormatToken.cpp Mon Jul 13 11:19:34 2015
@@ -23,6 +23,20 @@
namespace clang {
namespace format {
+const char *getTokenTypeName(TokenType Type) {
+ static const char *const TokNames[] = {
+#define TYPE(X) #X,
+LIST_TOKEN_TYPES
+#undef TYPE
+ nullptr
+ };
+
+ if (Type < NUM_TOKEN_TYPES)
+ return TokNames[Type];
+ llvm_unreachable("unknown TokenType");
+ return nullptr;
+}
+
// FIXME: This is copy&pasted from Sema. Put it in a common place and remove
// duplication.
bool FormatToken::isSimpleTypeSpecifier() const {
Modified: cfe/trunk/lib/Format/FormatToken.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/FormatToken.h?rev=242039&r1=242038&r2=242039&view=diff
==============================================================================
--- cfe/trunk/lib/Format/FormatToken.h (original)
+++ cfe/trunk/lib/Format/FormatToken.h Mon Jul 13 11:19:34 2015
@@ -25,68 +25,77 @@
namespace clang {
namespace format {
+#define LIST_TOKEN_TYPES \
+ TYPE(ArrayInitializerLSquare) \
+ TYPE(ArraySubscriptLSquare) \
+ TYPE(AttributeParen) \
+ TYPE(BinaryOperator) \
+ TYPE(BitFieldColon) \
+ TYPE(BlockComment) \
+ TYPE(CastRParen) \
+ TYPE(ConditionalExpr) \
+ TYPE(ConflictAlternative) \
+ TYPE(ConflictEnd) \
+ TYPE(ConflictStart) \
+ TYPE(CtorInitializerColon) \
+ TYPE(CtorInitializerComma) \
+ TYPE(DesignatedInitializerPeriod) \
+ TYPE(DictLiteral) \
+ TYPE(ForEachMacro) \
+ TYPE(FunctionAnnotationRParen) \
+ TYPE(FunctionDeclarationName) \
+ TYPE(FunctionLBrace) \
+ TYPE(FunctionTypeLParen) \
+ TYPE(ImplicitStringLiteral) \
+ TYPE(InheritanceColon) \
+ TYPE(InlineASMBrace) \
+ TYPE(InlineASMColon) \
+ TYPE(JavaAnnotation) \
+ TYPE(JsComputedPropertyName) \
+ TYPE(JsFatArrow) \
+ TYPE(JsTypeColon) \
+ TYPE(JsTypeOptionalQuestion) \
+ TYPE(LambdaArrow) \
+ TYPE(LambdaLSquare) \
+ TYPE(LeadingJavaAnnotation) \
+ TYPE(LineComment) \
+ TYPE(MacroBlockBegin) \
+ TYPE(MacroBlockEnd) \
+ TYPE(ObjCBlockLBrace) \
+ TYPE(ObjCBlockLParen) \
+ TYPE(ObjCDecl) \
+ TYPE(ObjCForIn) \
+ TYPE(ObjCMethodExpr) \
+ TYPE(ObjCMethodSpecifier) \
+ TYPE(ObjCProperty) \
+ TYPE(ObjCStringLiteral) \
+ TYPE(OverloadedOperator) \
+ TYPE(OverloadedOperatorLParen) \
+ TYPE(PointerOrReference) \
+ TYPE(PureVirtualSpecifier) \
+ TYPE(RangeBasedForLoopColon) \
+ TYPE(RegexLiteral) \
+ TYPE(SelectorName) \
+ TYPE(StartOfName) \
+ TYPE(TemplateCloser) \
+ TYPE(TemplateOpener) \
+ TYPE(TemplateString) \
+ TYPE(TrailingAnnotation) \
+ TYPE(TrailingReturnArrow) \
+ TYPE(TrailingUnaryOperator) \
+ TYPE(UnaryOperator) \
+ TYPE(Unknown)
+
enum TokenType {
- TT_ArrayInitializerLSquare,
- TT_ArraySubscriptLSquare,
- TT_AttributeParen,
- TT_BinaryOperator,
- TT_BitFieldColon,
- TT_BlockComment,
- TT_CastRParen,
- TT_ConditionalExpr,
- TT_ConflictAlternative,
- TT_ConflictEnd,
- TT_ConflictStart,
- TT_CtorInitializerColon,
- TT_CtorInitializerComma,
- TT_DesignatedInitializerPeriod,
- TT_DictLiteral,
- TT_ForEachMacro,
- TT_FunctionAnnotationRParen,
- TT_FunctionDeclarationName,
- TT_FunctionLBrace,
- TT_FunctionTypeLParen,
- TT_ImplicitStringLiteral,
- TT_InheritanceColon,
- TT_InlineASMBrace,
- TT_InlineASMColon,
- TT_JavaAnnotation,
- TT_JsComputedPropertyName,
- TT_JsFatArrow,
- TT_JsTypeColon,
- TT_JsTypeOptionalQuestion,
- TT_LambdaArrow,
- TT_LambdaLSquare,
- TT_LeadingJavaAnnotation,
- TT_LineComment,
- TT_MacroBlockBegin,
- TT_MacroBlockEnd,
- TT_ObjCBlockLBrace,
- TT_ObjCBlockLParen,
- TT_ObjCDecl,
- TT_ObjCForIn,
- TT_ObjCMethodExpr,
- TT_ObjCMethodSpecifier,
- TT_ObjCProperty,
- TT_ObjCStringLiteral,
- TT_OverloadedOperator,
- TT_OverloadedOperatorLParen,
- TT_PointerOrReference,
- TT_PureVirtualSpecifier,
- TT_RangeBasedForLoopColon,
- TT_RegexLiteral,
- TT_SelectorName,
- TT_StartOfName,
- TT_TemplateCloser,
- TT_TemplateOpener,
- TT_TemplateString,
- TT_TrailingAnnotation,
- TT_TrailingReturnArrow,
- TT_TrailingUnaryOperator,
- TT_UnaryOperator,
- TT_Unknown
+#define TYPE(X) TT_##X,
+LIST_TOKEN_TYPES
+#undef TYPE
+ NUM_TOKEN_TYPES
};
+/// \brief Determines the name of a token type.
+const char *getTokenTypeName(TokenType Type);
+
// Represents what type of block a set of braces open.
enum BraceBlockKind { BK_Unknown, BK_Block, BK_BracedInit };
Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=242039&r1=242038&r2=242039&view=diff
==============================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp Mon Jul 13 11:19:34 2015
@@ -2274,7 +2274,8 @@ void TokenAnnotator::printDebugInfo(cons
const FormatToken *Tok = Line.First;
while (Tok) {
llvm::errs() << " M=" << Tok->MustBreakBefore
- << " C=" << Tok->CanBreakBefore << " T=" << Tok->Type
+ << " C=" << Tok->CanBreakBefore
+ << " T=" << getTokenTypeName(Tok->Type)
<< " S=" << Tok->SpacesRequiredBefore
<< " B=" << Tok->BlockParameterCount
<< " P=" << Tok->SplitPenalty << " Name=" << Tok->Tok.getName()
More information about the cfe-commits
mailing list