Preprocessor: Reduce overhead from searching for fallthrough comments when not needed
This commit is contained in:
parent
b637e70d63
commit
7c402afeb7
|
@ -476,6 +476,7 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
|
||||||
unsigned char previous = 0;
|
unsigned char previous = 0;
|
||||||
bool inPreprocessorLine = false;
|
bool inPreprocessorLine = false;
|
||||||
std::vector<std::string> suppressionIDs;
|
std::vector<std::string> suppressionIDs;
|
||||||
|
const bool detectFallThroughComments = _settings && _settings->experimental && _settings->isEnabled("style");
|
||||||
bool fallThroughComment = false;
|
bool fallThroughComment = false;
|
||||||
|
|
||||||
for (std::string::size_type i = hasbom(str) ? 3U : 0U; i < str.length(); ++i) {
|
for (std::string::size_type i = hasbom(str) ? 3U : 0U; i < str.length(); ++i) {
|
||||||
|
@ -548,7 +549,7 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFallThroughComment(comment)) {
|
if (detectFallThroughComments && isFallThroughComment(comment)) {
|
||||||
fallThroughComment = true;
|
fallThroughComment = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -570,7 +571,7 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
|
||||||
}
|
}
|
||||||
std::string comment(str, commentStart, i - commentStart - 1);
|
std::string comment(str, commentStart, i - commentStart - 1);
|
||||||
|
|
||||||
if (isFallThroughComment(comment)) {
|
if (detectFallThroughComments && isFallThroughComment(comment)) {
|
||||||
fallThroughComment = true;
|
fallThroughComment = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,7 +630,7 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
|
||||||
|
|
||||||
// First check for a "fall through" comment match, but only
|
// First check for a "fall through" comment match, but only
|
||||||
// add a suppression if the next token is 'case' or 'default'
|
// add a suppression if the next token is 'case' or 'default'
|
||||||
if (_settings && _settings->isEnabled("style") && _settings->experimental && fallThroughComment) {
|
if (detectFallThroughComments && fallThroughComment) {
|
||||||
std::string::size_type j = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz", i);
|
std::string::size_type j = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz", i);
|
||||||
std::string tok = str.substr(i, j - i);
|
std::string tok = str.substr(i, j - i);
|
||||||
if (tok == "case" || tok == "default")
|
if (tok == "case" || tok == "default")
|
||||||
|
|
Loading…
Reference in New Issue