Skip to content

Commit b81cc60

Browse files
author
Thomas Preud'homme
committed
[clang][NFC] Make various uses of Regex const
The const-correctness of match() was fixed in rL372764, which allows uses of Regex objects to be const in cases they couldn't be before. This patch tightens up the const-ness of Regex in various such cases. Reviewers: thopre Reviewed By: thopre Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68155
1 parent 6287130 commit b81cc60

File tree

6 files changed

+43
-43
lines changed

6 files changed

+43
-43
lines changed

clang/include/clang/Tooling/Inclusions/HeaderIncludes.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ class IncludeCategoryManager {
4242
std::string FileName;
4343
// This refers to a substring in FileName.
4444
StringRef FileStem;
45-
// Regex is not thread-safe.
46-
mutable SmallVector<llvm::Regex, 4> CategoryRegexs;
45+
SmallVector<llvm::Regex, 4> CategoryRegexs;
4746
};
4847

4948
/// Generates replacements for inserting or deleting #include directives in a

clang/lib/Format/BreakableToken.cpp

+13-14
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,11 @@ getCommentSplit(StringRef Text, unsigned ContentStartColumn,
8888

8989
StringRef::size_type SpaceOffset = Text.find_last_of(Blanks, MaxSplitBytes);
9090

91-
static auto *const kNumberedListRegexp = new llvm::Regex("^[1-9][0-9]?\\.");
91+
static const auto kNumberedListRegexp = llvm::Regex("^[1-9][0-9]?\\.");
9292
while (SpaceOffset != StringRef::npos) {
9393
// Do not split before a number followed by a dot: this would be interpreted
9494
// as a numbered list, which would prevent re-flowing in subsequent passes.
95-
if (kNumberedListRegexp->match(Text.substr(SpaceOffset).ltrim(Blanks)))
95+
if (kNumberedListRegexp.match(Text.substr(SpaceOffset).ltrim(Blanks)))
9696
SpaceOffset = Text.find_last_of(Blanks, SpaceOffset);
9797
// In JavaScript, some @tags can be followed by {, and machinery that parses
9898
// these comments will fail to understand the comment if followed by a line
@@ -245,7 +245,7 @@ BreakableStringLiteral::BreakableStringLiteral(
245245

246246
BreakableToken::Split BreakableStringLiteral::getSplit(
247247
unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
248-
unsigned ContentStartColumn, llvm::Regex &CommentPragmasRegex) const {
248+
unsigned ContentStartColumn, const llvm::Regex &CommentPragmasRegex) const {
249249
return getStringSplit(Line.substr(TailOffset), ContentStartColumn,
250250
ColumnLimit - Postfix.size(), Style.TabWidth, Encoding);
251251
}
@@ -271,7 +271,7 @@ unsigned BreakableComment::getLineCount() const { return Lines.size(); }
271271
BreakableToken::Split
272272
BreakableComment::getSplit(unsigned LineIndex, unsigned TailOffset,
273273
unsigned ColumnLimit, unsigned ContentStartColumn,
274-
llvm::Regex &CommentPragmasRegex) const {
274+
const llvm::Regex &CommentPragmasRegex) const {
275275
// Don't break lines matching the comment pragmas regex.
276276
if (CommentPragmasRegex.match(Content[LineIndex]))
277277
return Split(StringRef::npos, 0);
@@ -316,9 +316,9 @@ static bool mayReflowContent(StringRef Content) {
316316
// Numbered lists may also start with a number followed by '.'
317317
// To avoid issues if a line starts with a number which is actually the end
318318
// of a previous line, we only consider numbers with up to 2 digits.
319-
static auto *const kNumberedListRegexp = new llvm::Regex("^[1-9][0-9]?\\. ");
319+
static const auto kNumberedListRegexp = llvm::Regex("^[1-9][0-9]?\\. ");
320320
hasSpecialMeaningPrefix =
321-
hasSpecialMeaningPrefix || kNumberedListRegexp->match(Content);
321+
hasSpecialMeaningPrefix || kNumberedListRegexp.match(Content);
322322

323323
// Simple heuristic for what to reflow: content should contain at least two
324324
// characters and either the first or second character must be
@@ -458,7 +458,7 @@ BreakableBlockComment::BreakableBlockComment(
458458

459459
BreakableToken::Split BreakableBlockComment::getSplit(
460460
unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
461-
unsigned ContentStartColumn, llvm::Regex &CommentPragmasRegex) const {
461+
unsigned ContentStartColumn, const llvm::Regex &CommentPragmasRegex) const {
462462
// Don't break lines matching the comment pragmas regex.
463463
if (CommentPragmasRegex.match(Content[LineIndex]))
464464
return Split(StringRef::npos, 0);
@@ -597,9 +597,8 @@ void BreakableBlockComment::insertBreak(unsigned LineIndex, unsigned TailOffset,
597597
PrefixWithTrailingIndent.size());
598598
}
599599

600-
BreakableToken::Split
601-
BreakableBlockComment::getReflowSplit(unsigned LineIndex,
602-
llvm::Regex &CommentPragmasRegex) const {
600+
BreakableToken::Split BreakableBlockComment::getReflowSplit(
601+
unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
603602
if (!mayReflow(LineIndex, CommentPragmasRegex))
604603
return Split(StringRef::npos, 0);
605604

@@ -706,8 +705,8 @@ BreakableBlockComment::getSplitAfterLastLine(unsigned TailOffset) const {
706705
return Split(StringRef::npos, 0);
707706
}
708707

709-
bool BreakableBlockComment::mayReflow(unsigned LineIndex,
710-
llvm::Regex &CommentPragmasRegex) const {
708+
bool BreakableBlockComment::mayReflow(
709+
unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
711710
// Content[LineIndex] may exclude the indent after the '*' decoration. In that
712711
// case, we compute the start of the comment pragma manually.
713712
StringRef IndentContent = Content[LineIndex];
@@ -845,7 +844,7 @@ void BreakableLineCommentSection::insertBreak(
845844
}
846845

847846
BreakableComment::Split BreakableLineCommentSection::getReflowSplit(
848-
unsigned LineIndex, llvm::Regex &CommentPragmasRegex) const {
847+
unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
849848
if (!mayReflow(LineIndex, CommentPragmasRegex))
850849
return Split(StringRef::npos, 0);
851850

@@ -955,7 +954,7 @@ void BreakableLineCommentSection::updateNextToken(LineState &State) const {
955954
}
956955

957956
bool BreakableLineCommentSection::mayReflow(
958-
unsigned LineIndex, llvm::Regex &CommentPragmasRegex) const {
957+
unsigned LineIndex, const llvm::Regex &CommentPragmasRegex) const {
959958
// Line comments have the indent as part of the prefix, so we need to
960959
// recompute the start of the line.
961960
StringRef IndentContent = Content[LineIndex];

clang/lib/Format/BreakableToken.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class BreakableToken {
155155
/// file.
156156
virtual Split getSplit(unsigned LineIndex, unsigned TailOffset,
157157
unsigned ColumnLimit, unsigned ContentStartColumn,
158-
llvm::Regex &CommentPragmasRegex) const = 0;
158+
const llvm::Regex &CommentPragmasRegex) const = 0;
159159

160160
/// Emits the previously retrieved \p Split via \p Whitespaces.
161161
virtual void insertBreak(unsigned LineIndex, unsigned TailOffset, Split Split,
@@ -190,7 +190,7 @@ class BreakableToken {
190190
/// If the split is not contained within one token, for example when reflowing
191191
/// line comments, returns (0, <length>).
192192
virtual Split getReflowSplit(unsigned LineIndex,
193-
llvm::Regex &CommentPragmasRegex) const {
193+
const llvm::Regex &CommentPragmasRegex) const {
194194
return Split(StringRef::npos, 0);
195195
}
196196

@@ -255,7 +255,7 @@ class BreakableStringLiteral : public BreakableToken {
255255

256256
Split getSplit(unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
257257
unsigned ContentStartColumn,
258-
llvm::Regex &CommentPragmasRegex) const override;
258+
const llvm::Regex &CommentPragmasRegex) const override;
259259
void insertBreak(unsigned LineIndex, unsigned TailOffset, Split Split,
260260
unsigned ContentIndent,
261261
WhitespaceManager &Whitespaces) const override;
@@ -298,7 +298,7 @@ class BreakableComment : public BreakableToken {
298298
unsigned getLineCount() const override;
299299
Split getSplit(unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
300300
unsigned ContentStartColumn,
301-
llvm::Regex &CommentPragmasRegex) const override;
301+
const llvm::Regex &CommentPragmasRegex) const override;
302302
void compressWhitespace(unsigned LineIndex, unsigned TailOffset, Split Split,
303303
WhitespaceManager &Whitespaces) const override;
304304

@@ -309,7 +309,7 @@ class BreakableComment : public BreakableToken {
309309
// Checks if the content of line LineIndex may be reflown with the previous
310310
// line.
311311
virtual bool mayReflow(unsigned LineIndex,
312-
llvm::Regex &CommentPragmasRegex) const = 0;
312+
const llvm::Regex &CommentPragmasRegex) const = 0;
313313

314314
// Contains the original text of the lines of the block comment.
315315
//
@@ -363,7 +363,7 @@ class BreakableBlockComment : public BreakableComment {
363363

364364
Split getSplit(unsigned LineIndex, unsigned TailOffset, unsigned ColumnLimit,
365365
unsigned ContentStartColumn,
366-
llvm::Regex &CommentPragmasRegex) const override;
366+
const llvm::Regex &CommentPragmasRegex) const override;
367367
unsigned getRangeLength(unsigned LineIndex, unsigned Offset,
368368
StringRef::size_type Length,
369369
unsigned StartColumn) const override;
@@ -375,7 +375,7 @@ class BreakableBlockComment : public BreakableComment {
375375
unsigned ContentIndent,
376376
WhitespaceManager &Whitespaces) const override;
377377
Split getReflowSplit(unsigned LineIndex,
378-
llvm::Regex &CommentPragmasRegex) const override;
378+
const llvm::Regex &CommentPragmasRegex) const override;
379379
void reflow(unsigned LineIndex,
380380
WhitespaceManager &Whitespaces) const override;
381381
bool introducesBreakBeforeToken() const override;
@@ -384,7 +384,7 @@ class BreakableBlockComment : public BreakableComment {
384384
Split getSplitAfterLastLine(unsigned TailOffset) const override;
385385

386386
bool mayReflow(unsigned LineIndex,
387-
llvm::Regex &CommentPragmasRegex) const override;
387+
const llvm::Regex &CommentPragmasRegex) const override;
388388

389389
// Contains Javadoc annotations that require additional indent when continued
390390
// on multiple lines.
@@ -448,14 +448,14 @@ class BreakableLineCommentSection : public BreakableComment {
448448
unsigned ContentIndent,
449449
WhitespaceManager &Whitespaces) const override;
450450
Split getReflowSplit(unsigned LineIndex,
451-
llvm::Regex &CommentPragmasRegex) const override;
451+
const llvm::Regex &CommentPragmasRegex) const override;
452452
void reflow(unsigned LineIndex,
453453
WhitespaceManager &Whitespaces) const override;
454454
void adaptStartOfLine(unsigned LineIndex,
455455
WhitespaceManager &Whitespaces) const override;
456456
void updateNextToken(LineState &State) const override;
457457
bool mayReflow(unsigned LineIndex,
458-
llvm::Regex &CommentPragmasRegex) const override;
458+
const llvm::Regex &CommentPragmasRegex) const override;
459459

460460
private:
461461
// OriginalPrefix[i] contains the original prefix of line i, including

clang/lib/Format/NamespaceEndCommentsFixer.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,24 @@ bool validEndComment(const FormatToken *RBraceTok, StringRef NamespaceName,
9292

9393
// Matches a valid namespace end comment.
9494
// Valid namespace end comments don't need to be edited.
95-
static llvm::Regex *const NamespaceCommentPattern =
96-
new llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *"
97-
"namespace( +([a-zA-Z0-9:_]+))?\\.? *(\\*/)?$",
98-
llvm::Regex::IgnoreCase);
99-
static llvm::Regex *const NamespaceMacroCommentPattern =
100-
new llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *"
101-
"([a-zA-Z0-9_]+)\\(([a-zA-Z0-9:_]*)\\)\\.? *(\\*/)?$",
102-
llvm::Regex::IgnoreCase);
95+
static const llvm::Regex NamespaceCommentPattern =
96+
llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *"
97+
"namespace( +([a-zA-Z0-9:_]+))?\\.? *(\\*/)?$",
98+
llvm::Regex::IgnoreCase);
99+
static const llvm::Regex NamespaceMacroCommentPattern =
100+
llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *"
101+
"([a-zA-Z0-9_]+)\\(([a-zA-Z0-9:_]*)\\)\\.? *(\\*/)?$",
102+
llvm::Regex::IgnoreCase);
103103

104104
SmallVector<StringRef, 8> Groups;
105105
if (NamespaceTok->is(TT_NamespaceMacro) &&
106-
NamespaceMacroCommentPattern->match(Comment->TokenText, &Groups)) {
106+
NamespaceMacroCommentPattern.match(Comment->TokenText, &Groups)) {
107107
StringRef NamespaceTokenText = Groups.size() > 4 ? Groups[4] : "";
108108
// The name of the macro must be used.
109109
if (NamespaceTokenText != NamespaceTok->TokenText)
110110
return false;
111111
} else if (NamespaceTok->isNot(tok::kw_namespace) ||
112-
!NamespaceCommentPattern->match(Comment->TokenText, &Groups)) {
112+
!NamespaceCommentPattern.match(Comment->TokenText, &Groups)) {
113113
// Comment does not match regex.
114114
return false;
115115
}

clang/lib/Format/UnwrappedLineParser.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -2498,9 +2498,10 @@ bool UnwrappedLineParser::isOnNewLine(const FormatToken &FormatTok) {
24982498

24992499
// Checks if \p FormatTok is a line comment that continues the line comment
25002500
// section on \p Line.
2501-
static bool continuesLineCommentSection(const FormatToken &FormatTok,
2502-
const UnwrappedLine &Line,
2503-
llvm::Regex &CommentPragmasRegex) {
2501+
static bool
2502+
continuesLineCommentSection(const FormatToken &FormatTok,
2503+
const UnwrappedLine &Line,
2504+
const llvm::Regex &CommentPragmasRegex) {
25042505
if (Line.Tokens.empty())
25052506
return false;
25062507

clang/tools/clang-refactor/TestSupport.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,10 @@ findTestSelectionRanges(StringRef Filename) {
303303

304304
// See the doc comment for this function for the explanation of this
305305
// syntax.
306-
static Regex RangeRegex("range[[:blank:]]*([[:alpha:]_]*)?[[:blank:]]*=[[:"
307-
"blank:]]*(\\+[[:digit:]]+)?[[:blank:]]*(->[[:blank:]"
308-
"]*[\\+\\:[:digit:]]+)?");
306+
static const Regex RangeRegex(
307+
"range[[:blank:]]*([[:alpha:]_]*)?[[:blank:]]*=[[:"
308+
"blank:]]*(\\+[[:digit:]]+)?[[:blank:]]*(->[[:blank:]"
309+
"]*[\\+\\:[:digit:]]+)?");
309310

310311
std::map<std::string, SmallVector<TestSelectionRange, 8>> GroupedRanges;
311312

@@ -352,7 +353,7 @@ findTestSelectionRanges(StringRef Filename) {
352353
unsigned EndOffset;
353354

354355
if (!Matches[3].empty()) {
355-
static Regex EndLocRegex(
356+
static const Regex EndLocRegex(
356357
"->[[:blank:]]*(\\+[[:digit:]]+):([[:digit:]]+)");
357358
SmallVector<StringRef, 4> EndLocMatches;
358359
if (!EndLocRegex.match(Matches[3], &EndLocMatches)) {

0 commit comments

Comments
 (0)