poiru created this revision.
poiru added a reviewer: djasper.
poiru added a subscriber: cfe-commits.
Herald added a subscriber: klimek.

http://reviews.llvm.org/D11125

Files:
  lib/Format/FormatToken.cpp
  lib/Format/FormatToken.h
  lib/Format/TokenAnnotator.cpp
  lib/Format/TokenTypes.def

Index: lib/Format/TokenTypes.def
===================================================================
--- /dev/null
+++ lib/Format/TokenTypes.def
@@ -0,0 +1,77 @@
+//===--- TokenTypes.def - Token Type Database -------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the TokenType database. Users of this file must
+// optionally #define the TYPE macro to make use of this file.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef TYPE
+#define TYPE(X)
+#endif
+
+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)
Index: lib/Format/TokenAnnotator.cpp
===================================================================
--- lib/Format/TokenAnnotator.cpp
+++ lib/Format/TokenAnnotator.cpp
@@ -2274,7 +2274,8 @@
   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()
Index: lib/Format/FormatToken.h
===================================================================
--- lib/Format/FormatToken.h
+++ lib/Format/FormatToken.h
@@ -26,67 +26,15 @@
 namespace format {
 
 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,
+#include "TokenTypes.def"
+#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 };
 
Index: lib/Format/FormatToken.cpp
===================================================================
--- lib/Format/FormatToken.cpp
+++ lib/Format/FormatToken.cpp
@@ -23,6 +23,20 @@
 namespace clang {
 namespace format {
 
+const char *getTokenTypeName(TokenType Type) {
+  static const char *const TokNames[] = {
+#define TYPE(X) #X,
+#include "TokenTypes.def"
+#undef TYPE
+    nullptr
+  };
+
+  if (Type < NUM_TOKEN_TYPES)
+    return TokNames[Type];
+  llvm_unreachable("unknown TokenKind");
+  return nullptr;
+}
+
 // FIXME: This is copy&pasted from Sema. Put it in a common place and remove
 // duplication.
 bool FormatToken::isSimpleTypeSpecifier() const {
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to