diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h')
-rw-r--r-- | contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h b/contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h index 6b08677e3369..65dd733bd533 100644 --- a/contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h +++ b/contrib/llvm-project/clang/lib/Format/FormatTokenLexer.h @@ -17,10 +17,12 @@ #include "Encoding.h" #include "FormatToken.h" +#include "clang/Basic/LangOptions.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/SourceManager.h" #include "clang/Format/Format.h" #include "llvm/ADT/MapVector.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/StringSet.h" #include "llvm/Support/Regex.h" @@ -50,17 +52,24 @@ private: void tryMergePreviousTokens(); bool tryMergeLessLess(); + bool tryMergeGreaterGreater(); bool tryMergeNSStringLiteral(); bool tryMergeJSPrivateIdentifier(); bool tryMergeCSharpStringLiteral(); bool tryMergeCSharpKeywordVariables(); - bool tryMergeCSharpDoubleQuestion(); - bool tryMergeCSharpNullConditional(); + bool tryMergeNullishCoalescingEqual(); bool tryTransformCSharpForEach(); bool tryMergeForEach(); bool tryTransformTryUsageForC(); + // Merge the most recently lexed tokens into a single token if their kinds are + // correct. bool tryMergeTokens(ArrayRef<tok::TokenKind> Kinds, TokenType NewType); + // Merge without checking their kinds. + bool tryMergeTokens(size_t Count, TokenType NewType); + // Merge if their kinds match any one of Kinds. + bool tryMergeTokensAny(ArrayRef<ArrayRef<tok::TokenKind>> Kinds, + TokenType NewType); // Returns \c true if \p Tok can only be followed by an operand in JavaScript. bool precedesOperand(FormatToken *Tok); @@ -86,12 +95,21 @@ private: void handleCSharpVerbatimAndInterpolatedStrings(); + // Handles TableGen multiline strings. It has the form [{ ... }]. + void handleTableGenMultilineString(); + // Handles TableGen numeric like identifiers. + // They have a forms of [0-9]*[_a-zA-Z]([_a-zA-Z0-9]*). But limited to the + // case it is not lexed as an integer. + void handleTableGenNumericLikeIdentifier(); + void tryParsePythonComment(); bool tryMerge_TMacro(); bool tryMergeConflictMarkers(); + void truncateToken(size_t NewLen); + FormatToken *getStashedToken(); FormatToken *getNextToken(); @@ -102,6 +120,7 @@ private: unsigned Column; unsigned TrailingWhitespace; std::unique_ptr<Lexer> Lex; + LangOptions LangOpts; const SourceManager &SourceMgr; FileID ID; const FormatStyle &Style; @@ -115,6 +134,8 @@ private: llvm::SmallMapVector<IdentifierInfo *, TokenType, 8> Macros; + llvm::SmallPtrSet<IdentifierInfo *, 8> TypeNames; + bool FormattingDisabled; llvm::Regex MacroBlockBeginRegex; @@ -123,6 +144,9 @@ private: // Targets that may appear inside a C# attribute. static const llvm::StringSet<> CSharpAttributeTargets; + /// Handle Verilog-specific tokens. + bool readRawTokenVerilogSpecific(Token &Tok); + void readRawToken(FormatToken &Tok); void resetLexer(unsigned Offset); |