Closed
Description
see https://godbolt.org/z/7nK7fG4Gs, reduced from https://github.com/zufuliu/notepad2/blob/main/scintilla/src/Document.cxx#L691
// clang-tidy -checks=readability-math-missing-parentheses test.cpp --
int LevelNumberPart(int level);
bool LevelIsHeader(int level);
bool LevelIsWhitespace(int level);
int GetFoldLevel(int line);
int GetFoldParent(int line);
int GetLastChild(int line);
int GetHighlightDelimiters(int line) {
const int level = GetFoldLevel(line);
int lookLine = line;
int lookLineLevel = level;
int lookLineLevelNum = 0;
const int beginFoldBlock = LevelIsHeader(lookLineLevel) ? lookLine : GetFoldParent(lookLine);
const int endFoldBlock = GetLastChild(beginFoldBlock);
int firstChangeableLineBefore = -1;
for (lookLine = line - 1, lookLineLevel = GetFoldLevel(lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel);
lookLine >= beginFoldBlock;
lookLineLevel = GetFoldLevel(--lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel)) {
if (LevelIsWhitespace(lookLineLevel) || (lookLineLevelNum > LevelNumberPart(level))) {
firstChangeableLineBefore = lookLine;
break;
}
}
int firstChangeableLineAfter = -1;
for (lookLine = line + 1, lookLineLevel = GetFoldLevel(lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel);
lookLine <= endFoldBlock;
lookLineLevel = GetFoldLevel(++lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel)) {
if (LevelIsHeader(lookLineLevel) && (lookLineLevelNum < LevelNumberPart(GetFoldLevel(lookLine + 1)))) {
firstChangeableLineAfter = lookLine;
break;
}
}
return firstChangeableLineBefore + firstChangeableLineAfter;
}
[<source>:18:21: warning: '-' has higher precedence than '='; add parentheses to explicitly specify the order of operations [readability-math-missing-parentheses]](javascript:;)
18 | for (lookLine = line - 1, lookLineLevel = GetFoldLevel(lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel);
| ^~~~~~~~~
| ( )
[<source>:28:21: warning: '+' has higher precedence than '='; add parentheses to explicitly specify the order of operations [readability-math-missing-parentheses]](javascript:;)
28 | for (lookLine = line + 1, lookLineLevel = GetFoldLevel(lookLine), lookLineLevelNum = LevelNumberPart(lookLineLevel);
| ^~~~~~~~~
| ( )
2 warnings generated.