Coverage Report

Created: 2021-01-26 06:56

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/Format/FormatToken.h
Line
Count
Source (jump to first uncovered line)
1
//===--- FormatToken.h - Format C++ code ------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
///
9
/// \file
10
/// This file contains the declaration of the FormatToken, a wrapper
11
/// around Token with additional information related to formatting.
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_LIB_FORMAT_FORMATTOKEN_H
16
#define LLVM_CLANG_LIB_FORMAT_FORMATTOKEN_H
17
18
#include "clang/Basic/IdentifierTable.h"
19
#include "clang/Basic/OperatorPrecedence.h"
20
#include "clang/Format/Format.h"
21
#include "clang/Lex/Lexer.h"
22
#include <memory>
23
#include <unordered_set>
24
25
namespace clang {
26
namespace format {
27
28
#define LIST_TOKEN_TYPES                                                       \
29
0
  TYPE(ArrayInitializerLSquare)                                                \
30
0
  TYPE(ArraySubscriptLSquare)                                                  \
31
0
  TYPE(AttributeColon)                                                         \
32
0
  TYPE(AttributeMacro)                                                         \
33
0
  TYPE(AttributeParen)                                                         \
34
0
  TYPE(AttributeSquare)                                                        \
35
0
  TYPE(BinaryOperator)                                                         \
36
0
  TYPE(BitFieldColon)                                                          \
37
0
  TYPE(BlockComment)                                                           \
38
0
  TYPE(CastRParen)                                                             \
39
0
  TYPE(ConditionalExpr)                                                        \
40
0
  TYPE(ConflictAlternative)                                                    \
41
0
  TYPE(ConflictEnd)                                                            \
42
0
  TYPE(ConflictStart)                                                          \
43
0
  TYPE(ConstraintJunctions)                                                    \
44
0
  TYPE(CtorInitializerColon)                                                   \
45
0
  TYPE(CtorInitializerComma)                                                   \
46
0
  TYPE(DesignatedInitializerLSquare)                                           \
47
0
  TYPE(DesignatedInitializerPeriod)                                            \
48
0
  TYPE(DictLiteral)                                                            \
49
0
  TYPE(ForEachMacro)                                                           \
50
0
  TYPE(FunctionAnnotationRParen)                                               \
51
0
  TYPE(FunctionDeclarationName)                                                \
52
0
  TYPE(FunctionLBrace)                                                         \
53
0
  TYPE(FunctionTypeLParen)                                                     \
54
0
  TYPE(ImplicitStringLiteral)                                                  \
55
0
  TYPE(InheritanceColon)                                                       \
56
0
  TYPE(InheritanceComma)                                                       \
57
0
  TYPE(InlineASMBrace)                                                         \
58
0
  TYPE(InlineASMColon)                                                         \
59
0
  TYPE(InlineASMSymbolicNameLSquare)                                           \
60
0
  TYPE(JavaAnnotation)                                                         \
61
0
  TYPE(JsComputedPropertyName)                                                 \
62
0
  TYPE(JsExponentiation)                                                       \
63
0
  TYPE(JsExponentiationEqual)                                                  \
64
0
  TYPE(JsFatArrow)                                                             \
65
0
  TYPE(JsNonNullAssertion)                                                     \
66
0
  TYPE(JsNullishCoalescingOperator)                                            \
67
0
  TYPE(JsNullPropagatingOperator)                                              \
68
0
  TYPE(JsPrivateIdentifier)                                                    \
69
0
  TYPE(JsTypeColon)                                                            \
70
0
  TYPE(JsTypeOperator)                                                         \
71
0
  TYPE(JsTypeOptionalQuestion)                                                 \
72
0
  TYPE(JsAndAndEqual)                                                          \
73
0
  TYPE(JsPipePipeEqual)                                                        \
74
0
  TYPE(JsNullishCoalescingEqual)                                               \
75
0
  TYPE(LambdaArrow)                                                            \
76
0
  TYPE(LambdaLBrace)                                                           \
77
0
  TYPE(LambdaLSquare)                                                          \
78
0
  TYPE(LeadingJavaAnnotation)                                                  \
79
0
  TYPE(LineComment)                                                            \
80
0
  TYPE(MacroBlockBegin)                                                        \
81
0
  TYPE(MacroBlockEnd)                                                          \
82
0
  TYPE(NamespaceMacro)                                                         \
83
0
  TYPE(ObjCBlockLBrace)                                                        \
84
0
  TYPE(ObjCBlockLParen)                                                        \
85
0
  TYPE(ObjCDecl)                                                               \
86
0
  TYPE(ObjCForIn)                                                              \
87
0
  TYPE(ObjCMethodExpr)                                                         \
88
0
  TYPE(ObjCMethodSpecifier)                                                    \
89
0
  TYPE(ObjCProperty)                                                           \
90
0
  TYPE(ObjCStringLiteral)                                                      \
91
0
  TYPE(OverloadedOperator)                                                     \
92
0
  TYPE(OverloadedOperatorLParen)                                               \
93
0
  TYPE(PointerOrReference)                                                     \
94
0
  TYPE(PureVirtualSpecifier)                                                   \
95
0
  TYPE(RangeBasedForLoopColon)                                                 \
96
0
  TYPE(RegexLiteral)                                                           \
97
0
  TYPE(SelectorName)                                                           \
98
0
  TYPE(StartOfName)                                                            \
99
0
  TYPE(StatementAttributeLikeMacro)                                            \
100
0
  TYPE(StatementMacro)                                                         \
101
0
  TYPE(StructuredBindingLSquare)                                               \
102
0
  TYPE(TemplateCloser)                                                         \
103
0
  TYPE(TemplateOpener)                                                         \
104
0
  TYPE(TemplateString)                                                         \
105
0
  TYPE(ProtoExtensionLSquare)                                                  \
106
0
  TYPE(TrailingAnnotation)                                                     \
107
0
  TYPE(TrailingReturnArrow)                                                    \
108
0
  TYPE(TrailingUnaryOperator)                                                  \
109
0
  TYPE(TypeDeclarationParen)                                                   \
110
0
  TYPE(TypenameMacro)                                                          \
111
0
  TYPE(UnaryOperator)                                                          \
112
0
  TYPE(UntouchableMacroFunc)                                                   \
113
0
  TYPE(CSharpStringLiteral)                                                    \
114
0
  TYPE(CSharpNamedArgumentColon)                                               \
115
0
  TYPE(CSharpNullable)                                                         \
116
0
  TYPE(CSharpNullCoalescing)                                                   \
117
0
  TYPE(CSharpNullConditional)                                                  \
118
0
  TYPE(CSharpNullConditionalLSquare)                                           \
119
0
  TYPE(CSharpGenericTypeConstraint)                                            \
120
0
  TYPE(CSharpGenericTypeConstraintColon)                                       \
121
0
  TYPE(CSharpGenericTypeConstraintComma)                                       \
122
0
  TYPE(Unknown)
123
124
/// Determines the semantic type of a syntactic token, e.g. whether "<" is a
125
/// template opener or binary operator.
126
enum TokenType : uint8_t {
127
#define TYPE(X) TT_##X,
128
  LIST_TOKEN_TYPES
129
#undef TYPE
130
      NUM_TOKEN_TYPES
131
};
132
133
/// Determines the name of a token type.
134
const char *getTokenTypeName(TokenType Type);
135
136
// Represents what type of block a set of braces open.
137
enum BraceBlockKind { BK_Unknown, BK_Block, BK_BracedInit };
138
139
// The packing kind of a function's parameters.
140
enum ParameterPackingKind { PPK_BinPacked, PPK_OnePerLine, PPK_Inconclusive };
141
142
enum FormatDecision { FD_Unformatted, FD_Continue, FD_Break };
143
144
/// Roles a token can take in a configured macro expansion.
145
enum MacroRole {
146
  /// The token was expanded from a macro argument when formatting the expanded
147
  /// token sequence.
148
  MR_ExpandedArg,
149
  /// The token is part of a macro argument that was previously formatted as
150
  /// expansion when formatting the unexpanded macro call.
151
  MR_UnexpandedArg,
152
  /// The token was expanded from a macro definition, and is not visible as part
153
  /// of the macro call.
154
  MR_Hidden,
155
};
156
157
struct FormatToken;
158
159
/// Contains information on the token's role in a macro expansion.
160
///
161
/// Given the following definitions:
162
/// A(X) = [ X ]
163
/// B(X) = < X >
164
/// C(X) = X
165
///
166
/// Consider the macro call:
167
/// A({B(C(C(x)))}) -> [{<x>}]
168
///
169
/// In this case, the tokens of the unexpanded macro call will have the
170
/// following relevant entries in their macro context (note that formatting
171
/// the unexpanded macro call happens *after* formatting the expanded macro
172
/// call):
173
///                   A( { B( C( C(x) ) ) } )
174
/// Role:             NN U NN NN NNUN N N U N  (N=None, U=UnexpandedArg)
175
///
176
///                   [  { <       x    > } ]
177
/// Role:             H  E H       E    H E H  (H=Hidden, E=ExpandedArg)
178
/// ExpandedFrom[0]:  A  A A       A    A A A
179
/// ExpandedFrom[1]:       B       B    B
180
/// ExpandedFrom[2]:               C
181
/// ExpandedFrom[3]:               C
182
/// StartOfExpansion: 1  0 1       2    0 0 0
183
/// EndOfExpansion:   0  0 0       2    1 0 1
184
struct MacroExpansion {
185
50
  MacroExpansion(MacroRole Role) : Role(Role) {}
186
187
  /// The token's role in the macro expansion.
188
  /// When formatting an expanded macro, all tokens that are part of macro
189
  /// arguments will be MR_ExpandedArg, while all tokens that are not visible in
190
  /// the macro call will be MR_Hidden.
191
  /// When formatting an unexpanded macro call, all tokens that are part of
192
  /// macro arguments will be MR_UnexpandedArg.
193
  MacroRole Role;
194
195
  /// The stack of macro call identifier tokens this token was expanded from.
196
  llvm::SmallVector<FormatToken *, 1> ExpandedFrom;
197
198
  /// The number of expansions of which this macro is the first entry.
199
  unsigned StartOfExpansion = 0;
200
201
  /// The number of currently open expansions in \c ExpandedFrom this macro is
202
  /// the last token in.
203
  unsigned EndOfExpansion = 0;
204
};
205
206
class TokenRole;
207
class AnnotatedLine;
208
209
/// A wrapper around a \c Token storing information about the
210
/// whitespace characters preceding it.
211
struct FormatToken {
212
  FormatToken()
213
      : HasUnescapedNewline(false), IsMultiline(false), IsFirst(false),
214
        MustBreakBefore(false), IsUnterminatedLiteral(false),
215
        CanBreakBefore(false), ClosesTemplateDeclaration(false),
216
        StartsBinaryExpression(false), EndsBinaryExpression(false),
217
        PartOfMultiVariableDeclStmt(false), ContinuesLineCommentSection(false),
218
        Finalized(false), BlockKind(BK_Unknown), Decision(FD_Unformatted),
219
658k
        PackingKind(PPK_Inconclusive), Type(TT_Unknown) {}
220
221
  /// The \c Token.
222
  Token Tok;
223
224
  /// The raw text of the token.
225
  ///
226
  /// Contains the raw token text without leading whitespace and without leading
227
  /// escaped newlines.
228
  StringRef TokenText;
229
230
  /// A token can have a special role that can carry extra information
231
  /// about the token's formatting.
232
  /// FIXME: Make FormatToken for parsing and AnnotatedToken two different
233
  /// classes and make this a unique_ptr in the AnnotatedToken class.
234
  std::shared_ptr<TokenRole> Role;
235
236
  /// The range of the whitespace immediately preceding the \c Token.
237
  SourceRange WhitespaceRange;
238
239
  /// Whether there is at least one unescaped newline before the \c
240
  /// Token.
241
  unsigned HasUnescapedNewline : 1;
242
243
  /// Whether the token text contains newlines (escaped or not).
244
  unsigned IsMultiline : 1;
245
246
  /// Indicates that this is the first token of the file.
247
  unsigned IsFirst : 1;
248
249
  /// Whether there must be a line break before this token.
250
  ///
251
  /// This happens for example when a preprocessor directive ended directly
252
  /// before the token.
253
  unsigned MustBreakBefore : 1;
254
255
  /// Set to \c true if this token is an unterminated literal.
256
  unsigned IsUnterminatedLiteral : 1;
257
258
  /// \c true if it is allowed to break before this token.
259
  unsigned CanBreakBefore : 1;
260
261
  /// \c true if this is the ">" of "template<..>".
262
  unsigned ClosesTemplateDeclaration : 1;
263
264
  /// \c true if this token starts a binary expression, i.e. has at least
265
  /// one fake l_paren with a precedence greater than prec::Unknown.
266
  unsigned StartsBinaryExpression : 1;
267
  /// \c true if this token ends a binary expression.
268
  unsigned EndsBinaryExpression : 1;
269
270
  /// Is this token part of a \c DeclStmt defining multiple variables?
271
  ///
272
  /// Only set if \c Type == \c TT_StartOfName.
273
  unsigned PartOfMultiVariableDeclStmt : 1;
274
275
  /// Does this line comment continue a line comment section?
276
  ///
277
  /// Only set to true if \c Type == \c TT_LineComment.
278
  unsigned ContinuesLineCommentSection : 1;
279
280
  /// If \c true, this token has been fully formatted (indented and
281
  /// potentially re-formatted inside), and we do not allow further formatting
282
  /// changes.
283
  unsigned Finalized : 1;
284
285
private:
286
  /// Contains the kind of block if this token is a brace.
287
  unsigned BlockKind : 2;
288
289
public:
290
938k
  BraceBlockKind getBlockKind() const {
291
938k
    return static_cast<BraceBlockKind>(BlockKind);
292
938k
  }
293
66.0k
  void setBlockKind(BraceBlockKind BBK) {
294
66.0k
    BlockKind = BBK;
295
66.0k
    assert(getBlockKind() == BBK && "BraceBlockKind overflow!");
296
66.0k
  }
297
298
private:
299
  /// Stores the formatting decision for the token once it was made.
300
  unsigned Decision : 2;
301
302
public:
303
754k
  FormatDecision getDecision() const {
304
754k
    return static_cast<FormatDecision>(Decision);
305
754k
  }
306
254k
  void setDecision(FormatDecision D) {
307
254k
    Decision = D;
308
254k
    assert(getDecision() == D && "FormatDecision overflow!");
309
254k
  }
310
311
private:
312
  /// If this is an opening parenthesis, how are the parameters packed?
313
  unsigned PackingKind : 2;
314
315
public:
316
402k
  ParameterPackingKind getPackingKind() const {
317
402k
    return static_cast<ParameterPackingKind>(PackingKind);
318
402k
  }
319
48.3k
  void setPackingKind(ParameterPackingKind K) {
320
48.3k
    PackingKind = K;
321
48.3k
    assert(getPackingKind() == K && "ParameterPackingKind overflow!");
322
48.3k
  }
323
324
private:
325
  TokenType Type;
326
327
public:
328
  /// Returns the token's type, e.g. whether "<" is a template opener or
329
  /// binary operator.
330
150M
  TokenType getType() const { return Type; }
331
817k
  void setType(TokenType T) { Type = T; }
332
333
  /// The number of newlines immediately before the \c Token.
334
  ///
335
  /// This can be used to determine what the user wrote in the original code
336
  /// and thereby e.g. leave an empty line between two function definitions.
337
  unsigned NewlinesBefore = 0;
338
339
  /// The offset just past the last '\n' in this token's leading
340
  /// whitespace (relative to \c WhiteSpaceStart). 0 if there is no '\n'.
341
  unsigned LastNewlineOffset = 0;
342
343
  /// The width of the non-whitespace parts of the token (or its first
344
  /// line for multi-line tokens) in columns.
345
  /// We need this to correctly measure number of columns a token spans.
346
  unsigned ColumnWidth = 0;
347
348
  /// Contains the width in columns of the last line of a multi-line
349
  /// token.
350
  unsigned LastLineColumnWidth = 0;
351
352
  /// The number of spaces that should be inserted before this token.
353
  unsigned SpacesRequiredBefore = 0;
354
355
  /// Number of parameters, if this is "(", "[" or "<".
356
  unsigned ParameterCount = 0;
357
358
  /// Number of parameters that are nested blocks,
359
  /// if this is "(", "[" or "<".
360
  unsigned BlockParameterCount = 0;
361
362
  /// If this is a bracket ("<", "(", "[" or "{"), contains the kind of
363
  /// the surrounding bracket.
364
  tok::TokenKind ParentBracket = tok::unknown;
365
366
  /// The total length of the unwrapped line up to and including this
367
  /// token.
368
  unsigned TotalLength = 0;
369
370
  /// The original 0-based column of this token, including expanded tabs.
371
  /// The configured TabWidth is used as tab width.
372
  unsigned OriginalColumn = 0;
373
374
  /// The length of following tokens until the next natural split point,
375
  /// or the next token that can be broken.
376
  unsigned UnbreakableTailLength = 0;
377
378
  // FIXME: Come up with a 'cleaner' concept.
379
  /// The binding strength of a token. This is a combined value of
380
  /// operator precedence, parenthesis nesting, etc.
381
  unsigned BindingStrength = 0;
382
383
  /// The nesting level of this token, i.e. the number of surrounding (),
384
  /// [], {} or <>.
385
  unsigned NestingLevel = 0;
386
387
  /// The indent level of this token. Copied from the surrounding line.
388
  unsigned IndentLevel = 0;
389
390
  /// Penalty for inserting a line break before this token.
391
  unsigned SplitPenalty = 0;
392
393
  /// If this is the first ObjC selector name in an ObjC method
394
  /// definition or call, this contains the length of the longest name.
395
  ///
396
  /// This being set to 0 means that the selectors should not be colon-aligned,
397
  /// e.g. because several of them are block-type.
398
  unsigned LongestObjCSelectorName = 0;
399
400
  /// If this is the first ObjC selector name in an ObjC method
401
  /// definition or call, this contains the number of parts that the whole
402
  /// selector consist of.
403
  unsigned ObjCSelectorNameParts = 0;
404
405
  /// The 0-based index of the parameter/argument. For ObjC it is set
406
  /// for the selector name token.
407
  /// For now calculated only for ObjC.
408
  unsigned ParameterIndex = 0;
409
410
  /// Stores the number of required fake parentheses and the
411
  /// corresponding operator precedence.
412
  ///
413
  /// If multiple fake parentheses start at a token, this vector stores them in
414
  /// reverse order, i.e. inner fake parenthesis first.
415
  SmallVector<prec::Level, 4> FakeLParens;
416
  /// Insert this many fake ) after this token for correct indentation.
417
  unsigned FakeRParens = 0;
418
419
  /// If this is an operator (or "."/"->") in a sequence of operators
420
  /// with the same precedence, contains the 0-based operator index.
421
  unsigned OperatorIndex = 0;
422
423
  /// If this is an operator (or "."/"->") in a sequence of operators
424
  /// with the same precedence, points to the next operator.
425
  FormatToken *NextOperator = nullptr;
426
427
  /// If this is a bracket, this points to the matching one.
428
  FormatToken *MatchingParen = nullptr;
429
430
  /// The previous token in the unwrapped line.
431
  FormatToken *Previous = nullptr;
432
433
  /// The next token in the unwrapped line.
434
  FormatToken *Next = nullptr;
435
436
  /// If this token starts a block, this contains all the unwrapped lines
437
  /// in it.
438
  SmallVector<AnnotatedLine *, 1> Children;
439
440
  // Contains all attributes related to how this token takes part
441
  // in a configured macro expansion.
442
  llvm::Optional<MacroExpansion> MacroCtx;
443
444
169M
  bool is(tok::TokenKind Kind) const { return Tok.is(Kind); }
445
147M
  bool is(TokenType TT) const { return getType() == TT; }
446
3.40M
  bool is(const IdentifierInfo *II) const {
447
3.40M
    return II && II == Tok.getIdentifierInfo();
448
3.40M
  }
449
19.2k
  bool is(tok::PPKeywordKind Kind) const {
450
19.2k
    return Tok.getIdentifierInfo() &&
451
17.8k
           Tok.getIdentifierInfo()->getPPKeywordID() == Kind;
452
19.2k
  }
453
772k
  bool is(BraceBlockKind BBK) const { return getBlockKind() == BBK; }
454
353k
  bool is(ParameterPackingKind PPK) const { return getPackingKind() == PPK; }
455
456
43.8M
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
43.8M
    return is(K1) || 
is(K2)42.5M
;
458
43.8M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
456
17.6M
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
17.6M
    return is(K1) || 
is(K2)16.8M
;
458
17.6M
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
456
12.3M
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
12.3M
    return is(K1) || 
is(K2)12.2M
;
458
12.3M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
456
12.0M
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
12.0M
    return is(K1) || 
is(K2)11.7M
;
458
12.0M
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::IdentifierInfo*>(clang::format::TokenType, clang::IdentifierInfo*) const
Line
Count
Source
456
24
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
24
    return is(K1) || is(K2);
458
24
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
456
650k
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
650k
    return is(K1) || 
is(K2)649k
;
458
650k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
456
946k
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
946k
    return is(K1) || 
is(K2)926k
;
458
946k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
456
33.7k
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
33.7k
    return is(K1) || 
is(K2)32.9k
;
458
33.7k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
456
24.0k
  template <typename A, typename B> bool isOneOf(A K1, B K2) const {
457
24.0k
    return is(K1) || 
is(K2)23.8k
;
458
24.0k
  }
459
  template <typename A, typename B, typename... Ts>
460
50.3M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
50.3M
    return is(K1) || 
isOneOf(K2, Ks...)46.2M
;
462
50.3M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::format::TokenType, clang::tok::TokenKind>(clang::tok::TokenKind, clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
460
27.1k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
27.1k
    return is(K1) || 
isOneOf(K2, Ks...)24.3k
;
462
27.1k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
10.0M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
10.0M
    return is(K1) || 
isOneOf(K2, Ks...)9.63M
;
462
10.0M
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
1.10k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.10k
    return is(K1) || 
isOneOf(K2, Ks...)1.10k
;
462
1.10k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
1.10k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.10k
    return is(K1) || 
isOneOf(K2, Ks...)1.10k
;
462
1.10k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::IdentifierInfo*, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
1.10k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.10k
    return is(K1) || isOneOf(K2, Ks...);
462
1.10k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
640k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
640k
    return is(K1) || 
isOneOf(K2, Ks...)640k
;
462
640k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
640k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
640k
    return is(K1) || 
isOneOf(K2, Ks...)639k
;
462
640k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
1.30M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.30M
    return is(K1) || 
isOneOf(K2, Ks...)1.30M
;
462
1.30M
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
1.53M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.53M
    return is(K1) || 
isOneOf(K2, Ks...)1.52M
;
462
1.53M
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
3.14M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.14M
    return is(K1) || 
isOneOf(K2, Ks...)3.12M
;
462
3.14M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
16.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.0k
    return is(K1) || 
isOneOf(K2, Ks...)15.5k
;
462
16.0k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
15.5k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
15.5k
    return is(K1) || 
isOneOf(K2, Ks...)15.4k
;
462
15.5k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
15.4k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
15.4k
    return is(K1) || 
isOneOf(K2, Ks...)15.3k
;
462
15.4k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
16.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.3k
    return is(K1) || 
isOneOf(K2, Ks...)16.1k
;
462
16.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
16.1k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.1k
    return is(K1) || 
isOneOf(K2, Ks...)15.9k
;
462
16.1k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
16.1k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.1k
    return is(K1) || 
isOneOf(K2, Ks...)16.0k
;
462
16.1k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
10.4M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
10.4M
    return is(K1) || 
isOneOf(K2, Ks...)8.29M
;
462
10.4M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
460
9.04M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
9.04M
    return is(K1) || 
isOneOf(K2, Ks...)8.62M
;
462
9.04M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
984k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
984k
    return is(K1) || 
isOneOf(K2, Ks...)840k
;
462
984k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
292
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
292
    return is(K1) || 
isOneOf(K2, Ks...)288
;
462
292
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
288
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
288
    return is(K1) || isOneOf(K2, Ks...);
462
288
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
288
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
288
    return is(K1) || isOneOf(K2, Ks...);
462
288
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
654k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
654k
    return is(K1) || 
isOneOf(K2, Ks...)652k
;
462
654k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
652k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
652k
    return is(K1) || 
isOneOf(K2, Ks...)650k
;
462
652k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
650k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
650k
    return is(K1) || 
isOneOf(K2, Ks...)650k
;
462
650k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
650k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
650k
    return is(K1) || 
isOneOf(K2, Ks...)650k
;
462
650k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
650k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
650k
    return is(K1) || 
isOneOf(K2, Ks...)649k
;
462
650k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
649k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
649k
    return is(K1) || 
isOneOf(K2, Ks...)640k
;
462
649k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
640k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
640k
    return is(K1) || 
isOneOf(K2, Ks...)639k
;
462
640k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
639k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
639k
    return is(K1) || 
isOneOf(K2, Ks...)639k
;
462
639k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
639k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
639k
    return is(K1) || 
isOneOf(K2, Ks...)639k
;
462
639k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
639k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
639k
    return is(K1) || 
isOneOf(K2, Ks...)639k
;
462
639k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType>(clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
639k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
639k
    return is(K1) || 
isOneOf(K2, Ks...)638k
;
462
639k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
149k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
149k
    return is(K1) || 
isOneOf(K2, Ks...)148k
;
462
149k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
236
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
236
    return is(K1) || 
isOneOf(K2, Ks...)186
;
462
236
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
186
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
186
    return is(K1) || 
isOneOf(K2, Ks...)162
;
462
186
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
162
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
162
    return is(K1) || 
isOneOf(K2, Ks...)156
;
462
162
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::format::TokenType, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
143k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
143k
    return is(K1) || 
isOneOf(K2, Ks...)143k
;
462
143k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
10.8k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
10.8k
    return is(K1) || 
isOneOf(K2, Ks...)10.2k
;
462
10.8k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
13.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
13.0k
    return is(K1) || 
isOneOf(K2, Ks...)12.7k
;
462
13.0k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
12.7k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.7k
    return is(K1) || 
isOneOf(K2, Ks...)12.5k
;
462
12.7k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
12.9k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.9k
    return is(K1) || 
isOneOf(K2, Ks...)12.6k
;
462
12.9k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
12.6k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.6k
    return is(K1) || 
isOneOf(K2, Ks...)12.6k
;
462
12.6k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
12.6k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.6k
    return is(K1) || 
isOneOf(K2, Ks...)12.5k
;
462
12.6k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
182k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
182k
    return is(K1) || 
isOneOf(K2, Ks...)167k
;
462
182k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
31.4k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
31.4k
    return is(K1) || 
isOneOf(K2, Ks...)31.4k
;
462
31.4k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
460
4.84k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.84k
    return is(K1) || 
isOneOf(K2, Ks...)4.82k
;
462
4.84k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind>(clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
460
4.82k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.82k
    return is(K1) || 
isOneOf(K2, Ks...)4.39k
;
462
4.82k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.13k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.13k
    return is(K1) || 
isOneOf(K2, Ks...)4.07k
;
462
4.13k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.07k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.07k
    return is(K1) || 
isOneOf(K2, Ks...)4.06k
;
462
4.07k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
7.51k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.51k
    return is(K1) || 
isOneOf(K2, Ks...)7.46k
;
462
7.51k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
7.46k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.46k
    return is(K1) || 
isOneOf(K2, Ks...)7.42k
;
462
7.46k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
7.42k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.42k
    return is(K1) || 
isOneOf(K2, Ks...)7.41k
;
462
7.42k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
11.5k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
11.5k
    return is(K1) || 
isOneOf(K2, Ks...)11.4k
;
462
11.5k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
23.4k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
23.4k
    return is(K1) || 
isOneOf(K2, Ks...)22.8k
;
462
23.4k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
22.8k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
22.8k
    return is(K1) || 
isOneOf(K2, Ks...)22.7k
;
462
22.8k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
1.69k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.69k
    return is(K1) || 
isOneOf(K2, Ks...)1.62k
;
462
1.69k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
1.62k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.62k
    return is(K1) || 
isOneOf(K2, Ks...)1.61k
;
462
1.62k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
2.95k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
2.95k
    return is(K1) || 
isOneOf(K2, Ks...)2.43k
;
462
2.95k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
2.43k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
2.43k
    return is(K1) || 
isOneOf(K2, Ks...)2.34k
;
462
2.43k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType>(clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
3.57M
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.57M
    return is(K1) || 
isOneOf(K2, Ks...)2.76M
;
462
3.57M
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
170k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
170k
    return is(K1) || 
isOneOf(K2, Ks...)166k
;
462
170k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
188k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
188k
    return is(K1) || 
isOneOf(K2, Ks...)165k
;
462
188k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
138k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
138k
    return is(K1) || 
isOneOf(K2, Ks...)137k
;
462
138k
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind>(clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
460
7.21k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.21k
    return is(K1) || 
isOneOf(K2, Ks...)6.80k
;
462
7.21k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
29.9k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
29.9k
    return is(K1) || 
isOneOf(K2, Ks...)21.5k
;
462
29.9k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::PPKeywordKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType>(clang::tok::PPKeywordKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
16.7k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.7k
    return is(K1) || 
isOneOf(K2, Ks...)16.7k
;
462
16.7k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
15.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
15.0k
    return is(K1) || 
isOneOf(K2, Ks...)15.0k
;
462
15.0k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
35.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
35.3k
    return is(K1) || 
isOneOf(K2, Ks...)35.3k
;
462
35.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
468
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
468
    return is(K1) || 
isOneOf(K2, Ks...)440
;
462
468
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
2.16k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
2.16k
    return is(K1) || 
isOneOf(K2, Ks...)2.16k
;
462
2.16k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
2.16k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
2.16k
    return is(K1) || 
isOneOf(K2, Ks...)2.16k
;
462
2.16k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
14.4k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14.4k
    return is(K1) || 
isOneOf(K2, Ks...)14.3k
;
462
14.4k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
14.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14.3k
    return is(K1) || 
isOneOf(K2, Ks...)14.3k
;
462
14.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
14.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14.3k
    return is(K1) || 
isOneOf(K2, Ks...)14.3k
;
462
14.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
14.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14.3k
    return is(K1) || 
isOneOf(K2, Ks...)14.3k
;
462
14.3k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
16.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.0k
    return is(K1) || 
isOneOf(K2, Ks...)16.0k
;
462
16.0k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
16.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.0k
    return is(K1) || 
isOneOf(K2, Ks...)16.0k
;
462
16.0k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
761
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
761
    return is(K1) || 
isOneOf(K2, Ks...)759
;
462
761
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
11.9k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
11.9k
    return is(K1) || 
isOneOf(K2, Ks...)11.9k
;
462
11.9k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
11.1k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
11.1k
    return is(K1) || 
isOneOf(K2, Ks...)11.1k
;
462
11.1k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.11k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.11k
    return is(K1) || 
isOneOf(K2, Ks...)4.09k
;
462
4.11k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.09k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.09k
    return is(K1) || 
isOneOf(K2, Ks...)4.08k
;
462
4.09k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.08k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.08k
    return is(K1) || 
isOneOf(K2, Ks...)4.07k
;
462
4.08k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
4.07k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
4.07k
    return is(K1) || 
isOneOf(K2, Ks...)4.00k
;
462
4.07k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
17.0k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
17.0k
    return is(K1) || 
isOneOf(K2, Ks...)16.6k
;
462
17.0k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
16.6k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.6k
    return is(K1) || 
isOneOf(K2, Ks...)16.4k
;
462
16.6k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType, clang::format::TokenType) const
Line
Count
Source
460
16.4k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
16.4k
    return is(K1) || 
isOneOf(K2, Ks...)16.2k
;
462
16.4k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
86
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
86
    return is(K1) || 
isOneOf(K2, Ks...)14
;
462
86
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
14
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14
    return is(K1) || isOneOf(K2, Ks...);
462
14
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
99
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
99
    return is(K1) || 
isOneOf(K2, Ks...)33
;
462
99
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.5k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.5k
    return is(K1) || 
isOneOf(K2, Ks...)12.3k
;
462
12.5k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.3k
    return is(K1) || 
isOneOf(K2, Ks...)12.3k
;
462
12.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.3k
    return is(K1) || 
isOneOf(K2, Ks...)12.3k
;
462
12.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.3k
    return is(K1) || 
isOneOf(K2, Ks...)12.3k
;
462
12.3k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.3k
    return is(K1) || 
isOneOf(K2, Ks...)12.3k
;
462
12.3k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.3k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.3k
    return is(K1) || 
isOneOf(K2, Ks...)12.2k
;
462
12.3k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
12.2k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
12.2k
    return is(K1) || 
isOneOf(K2, Ks...)12.2k
;
462
12.2k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
28
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
28
    return is(K1) || 
isOneOf(K2, Ks...)26
;
462
28
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
26
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
26
    return is(K1) || 
isOneOf(K2, Ks...)22
;
462
26
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
22
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
22
    return is(K1) || 
isOneOf(K2, Ks...)14
;
462
22
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
14
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
14
    return is(K1) || 
isOneOf(K2, Ks...)10
;
462
14
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
10
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
10
    return is(K1) || 
isOneOf(K2, Ks...)8
;
462
10
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || 
isOneOf(K2, Ks...)158
;
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
460
103k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
103k
    return is(K1) || 
isOneOf(K2, Ks...)103k
;
462
103k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
7.65k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.65k
    return is(K1) || 
isOneOf(K2, Ks...)7.53k
;
462
7.65k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
7.53k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
7.53k
    return is(K1) || 
isOneOf(K2, Ks...)7.49k
;
462
7.53k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
114
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
114
    return is(K1) || isOneOf(K2, Ks...);
462
114
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
114
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
114
    return is(K1) || isOneOf(K2, Ks...);
462
114
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
603
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
603
    return is(K1) || 
isOneOf(K2, Ks...)400
;
462
603
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
3.31k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.31k
    return is(K1) || 
isOneOf(K2, Ks...)3.30k
;
462
3.31k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
3.30k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.30k
    return is(K1) || 
isOneOf(K2, Ks...)3.28k
;
462
3.30k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
3.28k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.28k
    return is(K1) || isOneOf(K2, Ks...);
462
3.28k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
460
3.28k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
3.28k
    return is(K1) || 
isOneOf(K2, Ks...)3.28k
;
462
3.28k
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
176
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
176
    return is(K1) || 
isOneOf(K2, Ks...)164
;
462
176
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
164
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
164
    return is(K1) || isOneOf(K2, Ks...);
462
164
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
164
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
164
    return is(K1) || 
isOneOf(K2, Ks...)160
;
462
164
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || isOneOf(K2, Ks...);
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
160
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
160
    return is(K1) || 
isOneOf(K2, Ks...)156
;
462
160
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
156
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
156
    return is(K1) || 
isOneOf(K2, Ks...)152
;
462
156
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
460
152
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
152
    return is(K1) || isOneOf(K2, Ks...);
462
152
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.18k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.18k
    return is(K1) || 
isOneOf(K2, Ks...)1.17k
;
462
1.18k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.17k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.17k
    return is(K1) || isOneOf(K2, Ks...);
462
1.17k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.17k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.17k
    return is(K1) || 
isOneOf(K2, Ks...)1.17k
;
462
1.17k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.17k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.17k
    return is(K1) || 
isOneOf(K2, Ks...)1.16k
;
462
1.17k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.16k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.16k
    return is(K1) || 
isOneOf(K2, Ks...)1.16k
;
462
1.16k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.16k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.16k
    return is(K1) || 
isOneOf(K2, Ks...)1.14k
;
462
1.16k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.14k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.14k
    return is(K1) || isOneOf(K2, Ks...);
462
1.14k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.14k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.14k
    return is(K1) || 
isOneOf(K2, Ks...)1.10k
;
462
1.14k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.10k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.10k
    return is(K1) || 
isOneOf(K2, Ks...)1.00k
;
462
1.10k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.00k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.00k
    return is(K1) || 
isOneOf(K2, Ks...)1.00k
;
462
1.00k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
1.00k
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
1.00k
    return is(K1) || 
isOneOf(K2, Ks...)947
;
462
1.00k
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
947
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
947
    return is(K1) || 
isOneOf(K2, Ks...)875
;
462
947
  }
bool clang::format::FormatToken::isOneOf<clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
875
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
875
    return is(K1) || isOneOf(K2, Ks...);
462
875
  }
bool clang::format::FormatToken::isOneOf<clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
460
875
  bool isOneOf(A K1, B K2, Ts... Ks) const {
461
875
    return is(K1) || isOneOf(K2, Ks...);
462
875
  }
463
6.85M
  template <typename T> bool isNot(T Kind) const { return !is(Kind); }
bool clang::format::FormatToken::isNot<clang::tok::TokenKind>(clang::tok::TokenKind) const
Line
Count
Source
463
5.99M
  template <typename T> bool isNot(T Kind) const { return !is(Kind); }
bool clang::format::FormatToken::isNot<clang::IdentifierInfo*>(clang::IdentifierInfo*) const
Line
Count
Source
463
162
  template <typename T> bool isNot(T Kind) const { return !is(Kind); }
bool clang::format::FormatToken::isNot<clang::format::TokenType>(clang::format::TokenType) const
Line
Count
Source
463
807k
  template <typename T> bool isNot(T Kind) const { return !is(Kind); }
bool clang::format::FormatToken::isNot<clang::format::BraceBlockKind>(clang::format::BraceBlockKind) const
Line
Count
Source
463
49.8k
  template <typename T> bool isNot(T Kind) const { return !is(Kind); }
464
465
213k
  bool isIf(bool AllowConstexprMacro = true) const {
466
213k
    return is(tok::kw_if) || 
endsSequence(tok::kw_constexpr, tok::kw_if)208k
||
467
207k
           (endsSequence(tok::identifier, tok::kw_if) && 
AllowConstexprMacro519
);
468
213k
  }
469
470
1.26k
  bool closesScopeAfterBlock() const {
471
1.26k
    if (getBlockKind() == BK_Block)
472
59
      return true;
473
1.20k
    if (closesScope())
474
710
      return Previous->closesScopeAfterBlock();
475
495
    return false;
476
495
  }
477
478
  /// \c true if this token starts a sequence with the given tokens in order,
479
  /// following the ``Next`` pointers, ignoring comments.
480
  template <typename A, typename... Ts>
481
1.09M
  bool startsSequence(A K1, Ts... Tokens) const {
482
1.09M
    return startsSequenceInternal(K1, Tokens...);
483
1.09M
  }
bool clang::format::FormatToken::startsSequence<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
481
160
  bool startsSequence(A K1, Ts... Tokens) const {
482
160
    return startsSequenceInternal(K1, Tokens...);
483
160
  }
bool clang::format::FormatToken::startsSequence<clang::tok::TokenKind>(clang::tok::TokenKind) const
Line
Count
Source
481
385k
  bool startsSequence(A K1, Ts... Tokens) const {
482
385k
    return startsSequenceInternal(K1, Tokens...);
483
385k
  }
bool clang::format::FormatToken::startsSequence<clang::format::TokenType>(clang::format::TokenType) const
Line
Count
Source
481
650k
  bool startsSequence(A K1, Ts... Tokens) const {
482
650k
    return startsSequenceInternal(K1, Tokens...);
483
650k
  }
bool clang::format::FormatToken::startsSequence<clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
481
33.3k
  bool startsSequence(A K1, Ts... Tokens) const {
482
33.3k
    return startsSequenceInternal(K1, Tokens...);
483
33.3k
  }
bool clang::format::FormatToken::startsSequence<clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
481
3.64k
  bool startsSequence(A K1, Ts... Tokens) const {
482
3.64k
    return startsSequenceInternal(K1, Tokens...);
483
3.64k
  }
bool clang::format::FormatToken::startsSequence<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
481
3.58k
  bool startsSequence(A K1, Ts... Tokens) const {
482
3.58k
    return startsSequenceInternal(K1, Tokens...);
483
3.58k
  }
bool clang::format::FormatToken::startsSequence<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
481
16.6k
  bool startsSequence(A K1, Ts... Tokens) const {
482
16.6k
    return startsSequenceInternal(K1, Tokens...);
483
16.6k
  }
bool clang::format::FormatToken::startsSequence<clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
481
5.14k
  bool startsSequence(A K1, Ts... Tokens) const {
482
5.14k
    return startsSequenceInternal(K1, Tokens...);
483
5.14k
  }
484
485
  /// \c true if this token ends a sequence with the given tokens in order,
486
  /// following the ``Previous`` pointers, ignoring comments.
487
  /// For example, given tokens [T1, T2, T3], the function returns true if
488
  /// 3 tokens ending at this (ignoring comments) are [T3, T2, T1]. In other
489
  /// words, the tokens passed to this function need to the reverse of the
490
  /// order the tokens appear in code.
491
  template <typename A, typename... Ts>
492
431k
  bool endsSequence(A K1, Ts... Tokens) const {
493
431k
    return endsSequenceInternal(K1, Tokens...);
494
431k
  }
bool clang::format::FormatToken::endsSequence<clang::tok::TokenKind>(clang::tok::TokenKind) const
Line
Count
Source
492
579
  bool endsSequence(A K1, Ts... Tokens) const {
493
579
    return endsSequenceInternal(K1, Tokens...);
494
579
  }
bool clang::format::FormatToken::endsSequence<clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
492
416k
  bool endsSequence(A K1, Ts... Tokens) const {
493
416k
    return endsSequenceInternal(K1, Tokens...);
494
416k
  }
bool clang::format::FormatToken::endsSequence<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
492
317
  bool endsSequence(A K1, Ts... Tokens) const {
493
317
    return endsSequenceInternal(K1, Tokens...);
494
317
  }
bool clang::format::FormatToken::endsSequence<clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
492
292
  bool endsSequence(A K1, Ts... Tokens) const {
493
292
    return endsSequenceInternal(K1, Tokens...);
494
292
  }
bool clang::format::FormatToken::endsSequence<clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
492
12.5k
  bool endsSequence(A K1, Ts... Tokens) const {
493
12.5k
    return endsSequenceInternal(K1, Tokens...);
494
12.5k
  }
bool clang::format::FormatToken::endsSequence<clang::format::TokenType, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
492
1.16k
  bool endsSequence(A K1, Ts... Tokens) const {
493
1.16k
    return endsSequenceInternal(K1, Tokens...);
494
1.16k
  }
495
496
4.59M
  bool isStringLiteral() const { return tok::isStringLiteral(Tok.getKind()); }
497
498
50.0k
  bool isObjCAtKeyword(tok::ObjCKeywordKind Kind) const {
499
50.0k
    return Tok.isObjCAtKeyword(Kind);
500
50.0k
  }
501
502
90.8k
  bool isAccessSpecifier(bool ColonRequired = true) const {
503
90.8k
    return isOneOf(tok::kw_public, tok::kw_protected, tok::kw_private) &&
504
1.36k
           (!ColonRequired || 
(901
Next901
&&
Next->is(tok::colon)883
));
505
90.8k
  }
506
507
16.0k
  bool canBePointerOrReferenceQualifier() const {
508
16.0k
    return isOneOf(tok::kw_const, tok::kw_restrict, tok::kw_volatile,
509
16.0k
                   tok::kw___attribute, tok::kw__Nonnull, tok::kw__Nullable,
510
16.0k
                   tok::kw__Null_unspecified, tok::kw___ptr32, tok::kw___ptr64,
511
16.0k
                   TT_AttributeMacro);
512
16.0k
  }
513
514
  /// Determine whether the token is a simple-type-specifier.
515
  bool isSimpleTypeSpecifier() const;
516
517
52.5k
  bool isObjCAccessSpecifier() const {
518
52.5k
    return is(tok::at) && 
Next555
&&
519
555
           (Next->isObjCAtKeyword(tok::objc_public) ||
520
545
            Next->isObjCAtKeyword(tok::objc_protected) ||
521
535
            Next->isObjCAtKeyword(tok::objc_package) ||
522
525
            Next->isObjCAtKeyword(tok::objc_private));
523
52.5k
  }
524
525
  /// Returns whether \p Tok is ([{ or an opening < of a template or in
526
  /// protos.
527
5.49M
  bool opensScope() const {
528
5.49M
    if (is(TT_TemplateString) && 
TokenText.endswith("${")2.90k
)
529
1.66k
      return true;
530
5.49M
    if (is(TT_DictLiteral) && 
is(tok::less)56.1k
)
531
4.71k
      return true;
532
5.48M
    return isOneOf(tok::l_paren, tok::l_brace, tok::l_square,
533
5.48M
                   TT_TemplateOpener);
534
5.48M
  }
535
  /// Returns whether \p Tok is )]} or a closing > of a template or in
536
  /// protos.
537
4.98M
  bool closesScope() const {
538
4.98M
    if (is(TT_TemplateString) && 
TokenText.startswith("}")2.77k
)
539
2.07k
      return true;
540
4.98M
    if (is(TT_DictLiteral) && 
is(tok::greater)22.3k
)
541
6.31k
      return true;
542
4.97M
    return isOneOf(tok::r_paren, tok::r_brace, tok::r_square,
543
4.97M
                   TT_TemplateCloser);
544
4.97M
  }
545
546
  /// Returns \c true if this is a "." or "->" accessing a member.
547
4.88M
  bool isMemberAccess() const {
548
4.88M
    return isOneOf(tok::arrow, tok::period, tok::arrowstar) &&
549
55.6k
           !isOneOf(TT_DesignatedInitializerPeriod, TT_TrailingReturnArrow,
550
55.6k
                    TT_LambdaArrow, TT_LeadingJavaAnnotation);
551
4.88M
  }
552
553
9.85k
  bool isUnaryOperator() const {
554
9.85k
    switch (Tok.getKind()) {
555
29
    case tok::plus:
556
66
    case tok::plusplus:
557
116
    case tok::minus:
558
132
    case tok::minusminus:
559
159
    case tok::exclaim:
560
210
    case tok::tilde:
561
219
    case tok::kw_sizeof:
562
228
    case tok::kw_alignof:
563
228
      return true;
564
9.63k
    default:
565
9.63k
      return false;
566
9.85k
    }
567
9.85k
  }
568
569
1.32M
  bool isBinaryOperator() const {
570
    // Comma is a binary operator, but does not behave as such wrt. formatting.
571
1.32M
    return getPrecedence() > prec::Comma;
572
1.32M
  }
573
574
1.74M
  bool isTrailingComment() const {
575
1.74M
    return is(tok::comment) &&
576
18.2k
           (is(TT_LineComment) || 
!Next3.13k
||
Next->NewlinesBefore > 01.88k
);
577
1.74M
  }
578
579
  /// Returns \c true if this is a keyword that can be used
580
  /// like a function call (e.g. sizeof, typeid, ...).
581
96
  bool isFunctionLikeKeyword() const {
582
96
    switch (Tok.getKind()) {
583
6
    case tok::kw_throw:
584
6
    case tok::kw_typeid:
585
6
    case tok::kw_return:
586
18
    case tok::kw_sizeof:
587
24
    case tok::kw_alignof:
588
30
    case tok::kw_alignas:
589
36
    case tok::kw_decltype:
590
42
    case tok::kw_noexcept:
591
48
    case tok::kw_static_assert:
592
54
    case tok::kw__Atomic:
593
60
    case tok::kw___attribute:
594
66
    case tok::kw___underlying_type:
595
66
    case tok::kw_requires:
596
66
      return true;
597
30
    default:
598
30
      return false;
599
96
    }
600
96
  }
601
602
  /// Returns \c true if this is a string literal that's like a label,
603
  /// e.g. ends with "=" or ":".
604
9.60k
  bool isLabelString() const {
605
9.60k
    if (!is(tok::string_literal))
606
9.14k
      return false;
607
458
    StringRef Content = TokenText;
608
458
    if (Content.startswith("\"") || 
Content.startswith("'")197
)
609
353
      Content = Content.drop_front(1);
610
458
    if (Content.endswith("\"") || 
Content.endswith("'")102
)
611
448
      Content = Content.drop_back(1);
612
458
    Content = Content.trim();
613
458
    return Content.size() > 1 &&
614
428
           (Content.back() == ':' || 
Content.back() == '='344
);
615
458
  }
616
617
  /// Returns actual token start location without leading escaped
618
  /// newlines and whitespace.
619
  ///
620
  /// This can be different to Tok.getLocation(), which includes leading escaped
621
  /// newlines.
622
716k
  SourceLocation getStartOfNonWhitespace() const {
623
716k
    return WhitespaceRange.getEnd();
624
716k
  }
625
626
3.77M
  prec::Level getPrecedence() const {
627
3.77M
    return getBinOpPrecedence(Tok.getKind(), /*GreaterThanIsOperator=*/true,
628
3.77M
                              /*CPlusPlus11=*/true);
629
3.77M
  }
630
631
  /// Returns the previous token ignoring comments.
632
5.24M
  FormatToken *getPreviousNonComment() const {
633
5.24M
    FormatToken *Tok = Previous;
634
5.27M
    while (Tok && 
Tok->is(tok::comment)5.15M
)
635
24.8k
      Tok = Tok->Previous;
636
5.24M
    return Tok;
637
5.24M
  }
638
639
  /// Returns the next token ignoring comments.
640
4.23M
  const FormatToken *getNextNonComment() const {
641
4.23M
    const FormatToken *Tok = Next;
642
4.27M
    while (Tok && 
Tok->is(tok::comment)3.26M
)
643
44.7k
      Tok = Tok->Next;
644
4.23M
    return Tok;
645
4.23M
  }
646
647
  /// Returns \c true if this tokens starts a block-type list, i.e. a
648
  /// list that should be indented with a block indent.
649
387k
  bool opensBlockOrBlockTypeList(const FormatStyle &Style) const {
650
    // C# Does not indent object initialisers as continuations.
651
387k
    if (is(tok::l_brace) && 
getBlockKind() == BK_BracedInit49.6k
&&
Style.isCSharp()19.5k
)
652
1.22k
      return true;
653
386k
    if (is(TT_TemplateString) && 
opensScope()124
)
654
50
      return true;
655
386k
    return is(TT_ArrayInitializerLSquare) || 
is(TT_ProtoExtensionLSquare)384k
||
656
384k
           (is(tok::l_brace) &&
657
48.4k
            (getBlockKind() == BK_Block || 
is(TT_DictLiteral)22.2k
||
658
16.1k
             (!Style.Cpp11BracedListStyle && 
NestingLevel == 01.52k
))) ||
659
351k
           (is(tok::less) && 
(10.3k
Style.Language == FormatStyle::LK_Proto10.3k
||
660
9.15k
                              Style.Language == FormatStyle::LK_TextProto));
661
386k
  }
662
663
  /// Returns whether the token is the left square bracket of a C++
664
  /// structured binding declaration.
665
8.40k
  bool isCppStructuredBinding(const FormatStyle &Style) const {
666
8.40k
    if (!Style.isCpp() || 
isNot(tok::l_square)7.75k
)
667
658
      return false;
668
7.75k
    const FormatToken *T = this;
669
8.27k
    do {
670
8.27k
      T = T->getPreviousNonComment();
671
8.27k
    } while (T && T->isOneOf(tok::kw_const, tok::kw_volatile, tok::amp,
672
7.33k
                             tok::ampamp));
673
7.75k
    return T && 
T->is(tok::kw_auto)6.81k
;
674
7.75k
  }
675
676
  /// Same as opensBlockOrBlockTypeList, but for the closing token.
677
50.4k
  bool closesBlockOrBlockTypeList(const FormatStyle &Style) const {
678
50.4k
    if (is(TT_TemplateString) && 
closesScope()12
)
679
0
      return true;
680
50.4k
    return MatchingParen && 
MatchingParen->opensBlockOrBlockTypeList(Style)21.1k
;
681
50.4k
  }
682
683
  /// Return the actual namespace token, if this token starts a namespace
684
  /// block.
685
9.86k
  const FormatToken *getNamespaceToken() const {
686
9.86k
    const FormatToken *NamespaceTok = this;
687
9.86k
    if (is(tok::comment))
688
28
      NamespaceTok = NamespaceTok->getNextNonComment();
689
    // Detect "(inline|export)? namespace" in the beginning of a line.
690
9.86k
    if (NamespaceTok && 
NamespaceTok->isOneOf(tok::kw_inline, tok::kw_export)9.85k
)
691
65
      NamespaceTok = NamespaceTok->getNextNonComment();
692
9.86k
    return NamespaceTok &&
693
9.85k
                   NamespaceTok->isOneOf(tok::kw_namespace, TT_NamespaceMacro)
694
878
               ? NamespaceTok
695
8.98k
               : nullptr;
696
9.86k
  }
697
698
32
  void copyFrom(const FormatToken &Tok) { *this = Tok; }
699
700
private:
701
  // Only allow copying via the explicit copyFrom method.
702
  FormatToken(const FormatToken &) = delete;
703
32
  FormatToken &operator=(const FormatToken &) = default;
704
705
  template <typename A, typename... Ts>
706
63.5k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
63.5k
    if (is(tok::comment) && 
Next335
)
708
248
      return Next->startsSequenceInternal(K1, Tokens...);
709
63.2k
    return is(K1) && 
Next7.92k
&&
Next->startsSequenceInternal(Tokens...)7.92k
;
710
63.2k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
706
160
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
160
    if (is(tok::comment) && 
Next0
)
708
0
      return Next->startsSequenceInternal(K1, Tokens...);
709
160
    return is(K1) && Next && Next->startsSequenceInternal(Tokens...);
710
160
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
706
33.9k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
33.9k
    if (is(tok::comment) && 
Next34
)
708
30
      return Next->startsSequenceInternal(K1, Tokens...);
709
33.9k
    return is(K1) && 
Next7.19k
&&
Next->startsSequenceInternal(Tokens...)7.19k
;
710
33.9k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::IdentifierInfo*, clang::tok::TokenKind>(clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
706
3.76k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
3.76k
    if (is(tok::comment) && 
Next12
)
708
12
      return Next->startsSequenceInternal(K1, Tokens...);
709
3.75k
    return is(K1) && 
Next72
&&
Next->startsSequenceInternal(Tokens...)72
;
710
3.75k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind>(clang::tok::TokenKind, clang::IdentifierInfo*, clang::tok::TokenKind) const
Line
Count
Source
706
3.59k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
3.59k
    if (is(tok::comment) && 
Next8
)
708
8
      return Next->startsSequenceInternal(K1, Tokens...);
709
3.58k
    return is(K1) && 
Next107
&&
Next->startsSequenceInternal(Tokens...)107
;
710
3.58k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
706
16.8k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
16.8k
    if (is(tok::comment) && 
Next281
)
708
198
      return Next->startsSequenceInternal(K1, Tokens...);
709
16.6k
    return is(K1) && 
Next389
&&
Next->startsSequenceInternal(Tokens...)389
;
710
16.6k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::IdentifierInfo*, clang::IdentifierInfo*>(clang::IdentifierInfo*, clang::IdentifierInfo*) const
Line
Count
Source
706
5.14k
  bool startsSequenceInternal(A K1, Ts... Tokens) const {
707
5.14k
    if (is(tok::comment) && 
Next0
)
708
0
      return Next->startsSequenceInternal(K1, Tokens...);
709
5.14k
    return is(K1) && 
Next0
&&
Next->startsSequenceInternal(Tokens...)0
;
710
5.14k
  }
711
712
1.05M
  template <typename A> bool startsSequenceInternal(A K1) const {
713
1.05M
    if (is(tok::comment) && 
Next21.3k
)
714
7.88k
      return Next->startsSequenceInternal(K1);
715
1.04M
    return is(K1);
716
1.04M
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::tok::TokenKind>(clang::tok::TokenKind) const
Line
Count
Source
712
394k
  template <typename A> bool startsSequenceInternal(A K1) const {
713
394k
    if (is(tok::comment) && 
Next4.42k
)
714
1.74k
      return Next->startsSequenceInternal(K1);
715
392k
    return is(K1);
716
392k
  }
bool clang::format::FormatToken::startsSequenceInternal<clang::format::TokenType>(clang::format::TokenType) const
Line
Count
Source
712
656k
  template <typename A> bool startsSequenceInternal(A K1) const {
713
656k
    if (is(tok::comment) && 
Next16.9k
)
714
6.13k
      return Next->startsSequenceInternal(K1);
715
650k
    return is(K1);
716
650k
  }
Unexecuted instantiation: bool clang::format::FormatToken::startsSequenceInternal<clang::IdentifierInfo*>(clang::IdentifierInfo*) const
717
718
170k
  template <typename A, typename... Ts> bool endsSequenceInternal(A K1) const {
719
170k
    if (is(tok::comment) && 
Previous207
)
720
183
      return Previous->endsSequenceInternal(K1);
721
170k
    return is(K1);
722
170k
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind>(clang::tok::TokenKind) const
Line
Count
Source
718
169k
  template <typename A, typename... Ts> bool endsSequenceInternal(A K1) const {
719
169k
    if (is(tok::comment) && 
Previous203
)
720
183
      return Previous->endsSequenceInternal(K1);
721
169k
    return is(K1);
722
169k
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::format::TokenType>(clang::format::TokenType) const
Line
Count
Source
718
138
  template <typename A, typename... Ts> bool endsSequenceInternal(A K1) const {
719
138
    if (is(tok::comment) && 
Previous0
)
720
0
      return Previous->endsSequenceInternal(K1);
721
138
    return is(K1);
722
138
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::IdentifierInfo*>(clang::IdentifierInfo*) const
Line
Count
Source
718
878
  template <typename A, typename... Ts> bool endsSequenceInternal(A K1) const {
719
878
    if (is(tok::comment) && 
Previous4
)
720
0
      return Previous->endsSequenceInternal(K1);
721
878
    return is(K1);
722
878
  }
723
724
  template <typename A, typename... Ts>
725
432k
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
432k
    if (is(tok::comment) && 
Previous439
)
727
435
      return Previous->endsSequenceInternal(K1, Tokens...);
728
431k
    return is(K1) && 
Previous188k
&&
Previous->endsSequenceInternal(Tokens...)170k
;
729
431k
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
725
417k
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
417k
    if (is(tok::comment) && 
Previous354
)
727
354
      return Previous->endsSequenceInternal(K1, Tokens...);
728
417k
    return is(K1) && 
Previous186k
&&
Previous->endsSequenceInternal(Tokens...)168k
;
729
417k
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind>(clang::tok::TokenKind, clang::tok::TokenKind, clang::tok::TokenKind) const
Line
Count
Source
725
317
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
317
    if (is(tok::comment) && 
Previous0
)
727
0
      return Previous->endsSequenceInternal(K1, Tokens...);
728
317
    return is(K1) && Previous && 
Previous->endsSequenceInternal(Tokens...)269
;
729
317
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
725
292
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
292
    if (is(tok::comment) && 
Previous0
)
727
0
      return Previous->endsSequenceInternal(K1, Tokens...);
728
292
    return is(K1) && Previous && 
Previous->endsSequenceInternal(Tokens...)268
;
729
292
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind, clang::format::TokenType>(clang::tok::TokenKind, clang::format::TokenType) const
Line
Count
Source
725
268
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
268
    if (is(tok::comment) && 
Previous0
)
727
0
      return Previous->endsSequenceInternal(K1, Tokens...);
728
268
    return is(K1) && 
Previous138
&&
Previous->endsSequenceInternal(Tokens...)138
;
729
268
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::tok::TokenKind, clang::IdentifierInfo*>(clang::tok::TokenKind, clang::IdentifierInfo*) const
Line
Count
Source
725
12.6k
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
12.6k
    if (is(tok::comment) && 
Previous85
)
727
81
      return Previous->endsSequenceInternal(K1, Tokens...);
728
12.5k
    return is(K1) && 
Previous1.34k
&&
Previous->endsSequenceInternal(Tokens...)878
;
729
12.5k
  }
bool clang::format::FormatToken::endsSequenceInternal<clang::format::TokenType, clang::tok::TokenKind>(clang::format::TokenType, clang::tok::TokenKind) const
Line
Count
Source
725
1.16k
  bool endsSequenceInternal(A K1, Ts... Tokens) const {
726
1.16k
    if (is(tok::comment) && 
Previous0
)
727
0
      return Previous->endsSequenceInternal(K1, Tokens...);
728
1.16k
    return is(K1) && 
Previous28
&&
Previous->endsSequenceInternal(Tokens...)28
;
729
1.16k
  }
730
};
731
732
class ContinuationIndenter;
733
struct LineState;
734
735
class TokenRole {
736
public:
737
9.10k
  TokenRole(const FormatStyle &Style) : Style(Style) {}
738
  virtual ~TokenRole();
739
740
  /// After the \c TokenAnnotator has finished annotating all the tokens,
741
  /// this function precomputes required information for formatting.
742
  virtual void precomputeFormattingInfos(const FormatToken *Token);
743
744
  /// Apply the special formatting that the given role demands.
745
  ///
746
  /// Assumes that the token having this role is already formatted.
747
  ///
748
  /// Continues formatting from \p State leaving indentation to \p Indenter and
749
  /// returns the total penalty that this formatting incurs.
750
  virtual unsigned formatFromToken(LineState &State,
751
                                   ContinuationIndenter *Indenter,
752
0
                                   bool DryRun) {
753
0
    return 0;
754
0
  }
755
756
  /// Same as \c formatFromToken, but assumes that the first token has
757
  /// already been set thereby deciding on the first line break.
758
  virtual unsigned formatAfterToken(LineState &State,
759
                                    ContinuationIndenter *Indenter,
760
0
                                    bool DryRun) {
761
0
    return 0;
762
0
  }
763
764
  /// Notifies the \c Role that a comma was found.
765
0
  virtual void CommaFound(const FormatToken *Token) {}
766
767
0
  virtual const FormatToken *lastComma() { return nullptr; }
768
769
protected:
770
  const FormatStyle &Style;
771
};
772
773
class CommaSeparatedList : public TokenRole {
774
public:
775
  CommaSeparatedList(const FormatStyle &Style)
776
9.10k
      : TokenRole(Style), HasNestedBracedList(false) {}
777
778
  void precomputeFormattingInfos(const FormatToken *Token) override;
779
780
  unsigned formatAfterToken(LineState &State, ContinuationIndenter *Indenter,
781
                            bool DryRun) override;
782
783
  unsigned formatFromToken(LineState &State, ContinuationIndenter *Indenter,
784
                           bool DryRun) override;
785
786
  /// Adds \p Token as the next comma to the \c CommaSeparated list.
787
16.7k
  void CommaFound(const FormatToken *Token) override {
788
16.7k
    Commas.push_back(Token);
789
16.7k
  }
790
791
99
  const FormatToken *lastComma() override {
792
99
    if (Commas.empty())
793
0
      return nullptr;
794
99
    return Commas.back();
795
99
  }
796
797
private:
798
  /// A struct that holds information on how to format a given list with
799
  /// a specific number of columns.
800
  struct ColumnFormat {
801
    /// The number of columns to use.
802
    unsigned Columns;
803
804
    /// The total width in characters.
805
    unsigned TotalWidth;
806
807
    /// The number of lines required for this format.
808
    unsigned LineCount;
809
810
    /// The size of each column in characters.
811
    SmallVector<unsigned, 8> ColumnSizes;
812
  };
813
814
  /// Calculate which \c ColumnFormat fits best into
815
  /// \p RemainingCharacters.
816
  const ColumnFormat *getColumnFormat(unsigned RemainingCharacters) const;
817
818
  /// The ordered \c FormatTokens making up the commas of this list.
819
  SmallVector<const FormatToken *, 8> Commas;
820
821
  /// The length of each of the list's items in characters including the
822
  /// trailing comma.
823
  SmallVector<unsigned, 8> ItemLengths;
824
825
  /// Precomputed formats that can be used for this list.
826
  SmallVector<ColumnFormat, 4> Formats;
827
828
  bool HasNestedBracedList;
829
};
830
831
/// Encapsulates keywords that are context sensitive or for languages not
832
/// properly supported by Clang's lexer.
833
struct AdditionalKeywords {
834
38.0k
  AdditionalKeywords(IdentifierTable &IdentTable) {
835
38.0k
    kw_final = &IdentTable.get("final");
836
38.0k
    kw_override = &IdentTable.get("override");
837
38.0k
    kw_in = &IdentTable.get("in");
838
38.0k
    kw_of = &IdentTable.get("of");
839
38.0k
    kw_CF_CLOSED_ENUM = &IdentTable.get("CF_CLOSED_ENUM");
840
38.0k
    kw_CF_ENUM = &IdentTable.get("CF_ENUM");
841
38.0k
    kw_CF_OPTIONS = &IdentTable.get("CF_OPTIONS");
842
38.0k
    kw_NS_CLOSED_ENUM = &IdentTable.get("NS_CLOSED_ENUM");
843
38.0k
    kw_NS_ENUM = &IdentTable.get("NS_ENUM");
844
38.0k
    kw_NS_OPTIONS = &IdentTable.get("NS_OPTIONS");
845
846
38.0k
    kw_as = &IdentTable.get("as");
847
38.0k
    kw_async = &IdentTable.get("async");
848
38.0k
    kw_await = &IdentTable.get("await");
849
38.0k
    kw_declare = &IdentTable.get("declare");
850
38.0k
    kw_finally = &IdentTable.get("finally");
851
38.0k
    kw_from = &IdentTable.get("from");
852
38.0k
    kw_function = &IdentTable.get("function");
853
38.0k
    kw_get = &IdentTable.get("get");
854
38.0k
    kw_import = &IdentTable.get("import");
855
38.0k
    kw_infer = &IdentTable.get("infer");
856
38.0k
    kw_is = &IdentTable.get("is");
857
38.0k
    kw_let = &IdentTable.get("let");
858
38.0k
    kw_module = &IdentTable.get("module");
859
38.0k
    kw_readonly = &IdentTable.get("readonly");
860
38.0k
    kw_set = &IdentTable.get("set");
861
38.0k
    kw_type = &IdentTable.get("type");
862
38.0k
    kw_typeof = &IdentTable.get("typeof");
863
38.0k
    kw_var = &IdentTable.get("var");
864
38.0k
    kw_yield = &IdentTable.get("yield");
865
866
38.0k
    kw_abstract = &IdentTable.get("abstract");
867
38.0k
    kw_assert = &IdentTable.get("assert");
868
38.0k
    kw_extends = &IdentTable.get("extends");
869
38.0k
    kw_implements = &IdentTable.get("implements");
870
38.0k
    kw_instanceof = &IdentTable.get("instanceof");
871
38.0k
    kw_interface = &IdentTable.get("interface");
872
38.0k
    kw_native = &IdentTable.get("native");
873
38.0k
    kw_package = &IdentTable.get("package");
874
38.0k
    kw_synchronized = &IdentTable.get("synchronized");
875
38.0k
    kw_throws = &IdentTable.get("throws");
876
38.0k
    kw___except = &IdentTable.get("__except");
877
38.0k
    kw___has_include = &IdentTable.get("__has_include");
878
38.0k
    kw___has_include_next = &IdentTable.get("__has_include_next");
879
880
38.0k
    kw_mark = &IdentTable.get("mark");
881
882
38.0k
    kw_extend = &IdentTable.get("extend");
883
38.0k
    kw_option = &IdentTable.get("option");
884
38.0k
    kw_optional = &IdentTable.get("optional");
885
38.0k
    kw_repeated = &IdentTable.get("repeated");
886
38.0k
    kw_required = &IdentTable.get("required");
887
38.0k
    kw_returns = &IdentTable.get("returns");
888
889
38.0k
    kw_signals = &IdentTable.get("signals");
890
38.0k
    kw_qsignals = &IdentTable.get("Q_SIGNALS");
891
38.0k
    kw_slots = &IdentTable.get("slots");
892
38.0k
    kw_qslots = &IdentTable.get("Q_SLOTS");
893
894
    // C# keywords
895
38.0k
    kw_dollar = &IdentTable.get("dollar");
896
38.0k
    kw_base = &IdentTable.get("base");
897
38.0k
    kw_byte = &IdentTable.get("byte");
898
38.0k
    kw_checked = &IdentTable.get("checked");
899
38.0k
    kw_decimal = &IdentTable.get("decimal");
900
38.0k
    kw_delegate = &IdentTable.get("delegate");
901
38.0k
    kw_event = &IdentTable.get("event");
902
38.0k
    kw_fixed = &IdentTable.get("fixed");
903
38.0k
    kw_foreach = &IdentTable.get("foreach");
904
38.0k
    kw_implicit = &IdentTable.get("implicit");
905
38.0k
    kw_internal = &IdentTable.get("internal");
906
38.0k
    kw_lock = &IdentTable.get("lock");
907
38.0k
    kw_null = &IdentTable.get("null");
908
38.0k
    kw_object = &IdentTable.get("object");
909
38.0k
    kw_out = &IdentTable.get("out");
910
38.0k
    kw_params = &IdentTable.get("params");
911
38.0k
    kw_ref = &IdentTable.get("ref");
912
38.0k
    kw_string = &IdentTable.get("string");
913
38.0k
    kw_stackalloc = &IdentTable.get("stackalloc");
914
38.0k
    kw_sbyte = &IdentTable.get("sbyte");
915
38.0k
    kw_sealed = &IdentTable.get("sealed");
916
38.0k
    kw_uint = &IdentTable.get("uint");
917
38.0k
    kw_ulong = &IdentTable.get("ulong");
918
38.0k
    kw_unchecked = &IdentTable.get("unchecked");
919
38.0k
    kw_unsafe = &IdentTable.get("unsafe");
920
38.0k
    kw_ushort = &IdentTable.get("ushort");
921
38.0k
    kw_when = &IdentTable.get("when");
922
38.0k
    kw_where = &IdentTable.get("where");
923
924
    // Keep this at the end of the constructor to make sure everything here
925
    // is
926
    // already initialized.
927
38.0k
    JsExtraKeywords = std::unordered_set<IdentifierInfo *>(
928
38.0k
        {kw_as, kw_async, kw_await, kw_declare, kw_finally, kw_from,
929
38.0k
         kw_function, kw_get, kw_import, kw_is, kw_let, kw_module, kw_readonly,
930
38.0k
         kw_set, kw_type, kw_typeof, kw_var, kw_yield,
931
         // Keywords from the Java section.
932
38.0k
         kw_abstract, kw_extends, kw_implements, kw_instanceof, kw_interface});
933
934
38.0k
    CSharpExtraKeywords = std::unordered_set<IdentifierInfo *>(
935
38.0k
        {kw_base, kw_byte, kw_checked, kw_decimal, kw_delegate, kw_event,
936
38.0k
         kw_fixed, kw_foreach, kw_implicit, kw_in, kw_interface, kw_internal,
937
38.0k
         kw_is, kw_lock, kw_null, kw_object, kw_out, kw_override, kw_params,
938
38.0k
         kw_readonly, kw_ref, kw_string, kw_stackalloc, kw_sbyte, kw_sealed,
939
38.0k
         kw_uint, kw_ulong, kw_unchecked, kw_unsafe, kw_ushort, kw_when,
940
38.0k
         kw_where,
941
         // Keywords from the JavaScript section.
942
38.0k
         kw_as, kw_async, kw_await, kw_declare, kw_finally, kw_from,
943
38.0k
         kw_function, kw_get, kw_import, kw_is, kw_let, kw_module, kw_readonly,
944
38.0k
         kw_set, kw_type, kw_typeof, kw_var, kw_yield,
945
         // Keywords from the Java section.
946
38.0k
         kw_abstract, kw_extends, kw_implements, kw_instanceof, kw_interface});
947
38.0k
  }
948
949
  // Context sensitive keywords.
950
  IdentifierInfo *kw_final;
951
  IdentifierInfo *kw_override;
952
  IdentifierInfo *kw_in;
953
  IdentifierInfo *kw_of;
954
  IdentifierInfo *kw_CF_CLOSED_ENUM;
955
  IdentifierInfo *kw_CF_ENUM;
956
  IdentifierInfo *kw_CF_OPTIONS;
957
  IdentifierInfo *kw_NS_CLOSED_ENUM;
958
  IdentifierInfo *kw_NS_ENUM;
959
  IdentifierInfo *kw_NS_OPTIONS;
960
  IdentifierInfo *kw___except;
961
  IdentifierInfo *kw___has_include;
962
  IdentifierInfo *kw___has_include_next;
963
964
  // JavaScript keywords.
965
  IdentifierInfo *kw_as;
966
  IdentifierInfo *kw_async;
967
  IdentifierInfo *kw_await;
968
  IdentifierInfo *kw_declare;
969
  IdentifierInfo *kw_finally;
970
  IdentifierInfo *kw_from;
971
  IdentifierInfo *kw_function;
972
  IdentifierInfo *kw_get;
973
  IdentifierInfo *kw_import;
974
  IdentifierInfo *kw_infer;
975
  IdentifierInfo *kw_is;
976
  IdentifierInfo *kw_let;
977
  IdentifierInfo *kw_module;
978
  IdentifierInfo *kw_readonly;
979
  IdentifierInfo *kw_set;
980
  IdentifierInfo *kw_type;
981
  IdentifierInfo *kw_typeof;
982
  IdentifierInfo *kw_var;
983
  IdentifierInfo *kw_yield;
984
985
  // Java keywords.
986
  IdentifierInfo *kw_abstract;
987
  IdentifierInfo *kw_assert;
988
  IdentifierInfo *kw_extends;
989
  IdentifierInfo *kw_implements;
990
  IdentifierInfo *kw_instanceof;
991
  IdentifierInfo *kw_interface;
992
  IdentifierInfo *kw_native;
993
  IdentifierInfo *kw_package;
994
  IdentifierInfo *kw_synchronized;
995
  IdentifierInfo *kw_throws;
996
997
  // Pragma keywords.
998
  IdentifierInfo *kw_mark;
999
1000
  // Proto keywords.
1001
  IdentifierInfo *kw_extend;
1002
  IdentifierInfo *kw_option;
1003
  IdentifierInfo *kw_optional;
1004
  IdentifierInfo *kw_repeated;
1005
  IdentifierInfo *kw_required;
1006
  IdentifierInfo *kw_returns;
1007
1008
  // QT keywords.
1009
  IdentifierInfo *kw_signals;
1010
  IdentifierInfo *kw_qsignals;
1011
  IdentifierInfo *kw_slots;
1012
  IdentifierInfo *kw_qslots;
1013
1014
  // C# keywords
1015
  IdentifierInfo *kw_dollar;
1016
  IdentifierInfo *kw_base;
1017
  IdentifierInfo *kw_byte;
1018
  IdentifierInfo *kw_checked;
1019
  IdentifierInfo *kw_decimal;
1020
  IdentifierInfo *kw_delegate;
1021
  IdentifierInfo *kw_event;
1022
  IdentifierInfo *kw_fixed;
1023
  IdentifierInfo *kw_foreach;
1024
  IdentifierInfo *kw_implicit;
1025
  IdentifierInfo *kw_internal;
1026
1027
  IdentifierInfo *kw_lock;
1028
  IdentifierInfo *kw_null;
1029
  IdentifierInfo *kw_object;
1030
  IdentifierInfo *kw_out;
1031
1032
  IdentifierInfo *kw_params;
1033
1034
  IdentifierInfo *kw_ref;
1035
  IdentifierInfo *kw_string;
1036
  IdentifierInfo *kw_stackalloc;
1037
  IdentifierInfo *kw_sbyte;
1038
  IdentifierInfo *kw_sealed;
1039
  IdentifierInfo *kw_uint;
1040
  IdentifierInfo *kw_ulong;
1041
  IdentifierInfo *kw_unchecked;
1042
  IdentifierInfo *kw_unsafe;
1043
  IdentifierInfo *kw_ushort;
1044
  IdentifierInfo *kw_when;
1045
  IdentifierInfo *kw_where;
1046
1047
  /// Returns \c true if \p Tok is a true JavaScript identifier, returns
1048
  /// \c false if it is a keyword or a pseudo keyword.
1049
  /// If \c AcceptIdentifierName is true, returns true not only for keywords,
1050
  // but also for IdentifierName tokens (aka pseudo-keywords), such as
1051
  // ``yield``.
1052
  bool IsJavaScriptIdentifier(const FormatToken &Tok,
1053
11.5k
                              bool AcceptIdentifierName = true) const {
1054
    // Based on the list of JavaScript & TypeScript keywords here:
1055
    // https://github.com/microsoft/TypeScript/blob/master/src/compiler/scanner.ts#L74
1056
11.5k
    switch (Tok.Tok.getKind()) {
1057
2
    case tok::kw_break:
1058
10
    case tok::kw_case:
1059
16
    case tok::kw_catch:
1060
22
    case tok::kw_class:
1061
24
    case tok::kw_continue:
1062
28
    case tok::kw_const:
1063
40
    case tok::kw_default:
1064
46
    case tok::kw_delete:
1065
48
    case tok::kw_do:
1066
50
    case tok::kw_else:
1067
54
    case tok::kw_enum:
1068
73
    case tok::kw_export:
1069
81
    case tok::kw_false:
1070
107
    case tok::kw_for:
1071
131
    case tok::kw_if:
1072
131
    case tok::kw_import:
1073
131
    case tok::kw_module:
1074
133
    case tok::kw_new:
1075
133
    case tok::kw_private:
1076
133
    case tok::kw_protected:
1077
133
    case tok::kw_public:
1078
253
    case tok::kw_return:
1079
257
    case tok::kw_static:
1080
265
    case tok::kw_switch:
1081
306
    case tok::kw_this:
1082
310
    case tok::kw_throw:
1083
316
    case tok::kw_true:
1084
320
    case tok::kw_try:
1085
322
    case tok::kw_typeof:
1086
328
    case tok::kw_void:
1087
332
    case tok::kw_while:
1088
      // These are JS keywords that are lexed by LLVM/clang as keywords.
1089
332
      return false;
1090
4.01k
    case tok::identifier: {
1091
      // For identifiers, make sure they are true identifiers, excluding the
1092
      // JavaScript pseudo-keywords (not lexed by LLVM/clang as keywords).
1093
4.01k
      bool IsPseudoKeyword =
1094
4.01k
          JsExtraKeywords.find(Tok.Tok.getIdentifierInfo()) !=
1095
4.01k
          JsExtraKeywords.end();
1096
4.01k
      return AcceptIdentifierName || 
!IsPseudoKeyword3.95k
;
1097
328
    }
1098
7.24k
    default:
1099
      // Other keywords are handled in the switch below, to avoid problems due
1100
      // to duplicate case labels when using the #include trick.
1101
7.24k
      break;
1102
7.24k
    }
1103
1104
7.24k
    switch (Tok.Tok.getKind()) {
1105
      // Handle C++ keywords not included above: these are all JS identifiers.
1106
58.9k
#define KEYWORD(X, Y) case tok::kw_##X:
1107
254
#include 
"clang/Basic/TokenKinds.def"0
1108
      // #undef KEYWORD is not needed -- it's #undef-ed at the end of
1109
      // TokenKinds.def
1110
254
      return true;
1111
6.98k
    default:
1112
      // All other tokens (punctuation etc) are not JS identifiers.
1113
6.98k
      return false;
1114
7.24k
    }
1115
7.24k
  }
1116
1117
  /// Returns \c true if \p Tok is a C# keyword, returns
1118
  /// \c false if it is a anything else.
1119
16
  bool isCSharpKeyword(const FormatToken &Tok) const {
1120
16
    switch (Tok.Tok.getKind()) {
1121
0
    case tok::kw_bool:
1122
0
    case tok::kw_break:
1123
0
    case tok::kw_case:
1124
0
    case tok::kw_catch:
1125
0
    case tok::kw_char:
1126
0
    case tok::kw_class:
1127
0
    case tok::kw_const:
1128
0
    case tok::kw_continue:
1129
0
    case tok::kw_default:
1130
0
    case tok::kw_do:
1131
0
    case tok::kw_double:
1132
0
    case tok::kw_else:
1133
2
    case tok::kw_enum:
1134
2
    case tok::kw_explicit:
1135
2
    case tok::kw_extern:
1136
2
    case tok::kw_false:
1137
2
    case tok::kw_float:
1138
2
    case tok::kw_for:
1139
2
    case tok::kw_goto:
1140
2
    case tok::kw_if:
1141
2
    case tok::kw_int:
1142
2
    case tok::kw_long:
1143
2
    case tok::kw_namespace:
1144
2
    case tok::kw_new:
1145
2
    case tok::kw_operator:
1146
2
    case tok::kw_private:
1147
2
    case tok::kw_protected:
1148
2
    case tok::kw_public:
1149
2
    case tok::kw_return:
1150
2
    case tok::kw_short:
1151
2
    case tok::kw_sizeof:
1152
2
    case tok::kw_static:
1153
2
    case tok::kw_struct:
1154
2
    case tok::kw_switch:
1155
2
    case tok::kw_this:
1156
2
    case tok::kw_throw:
1157
2
    case tok::kw_true:
1158
2
    case tok::kw_try:
1159
2
    case tok::kw_typeof:
1160
2
    case tok::kw_using:
1161
2
    case tok::kw_virtual:
1162
2
    case tok::kw_void:
1163
2
    case tok::kw_volatile:
1164
2
    case tok::kw_while:
1165
2
      return true;
1166
14
    default:
1167
14
      return Tok.is(tok::identifier) &&
1168
2
             CSharpExtraKeywords.find(Tok.Tok.getIdentifierInfo()) ==
1169
2
                 CSharpExtraKeywords.end();
1170
16
    }
1171
16
  }
1172
1173
private:
1174
  /// The JavaScript keywords beyond the C++ keyword set.
1175
  std::unordered_set<IdentifierInfo *> JsExtraKeywords;
1176
1177
  /// The C# keywords beyond the C++ keyword set
1178
  std::unordered_set<IdentifierInfo *> CSharpExtraKeywords;
1179
};
1180
1181
} // namespace format
1182
} // namespace clang
1183
1184
#endif