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
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits