|
48 | 48 | #include <unordered_map> |
49 | 49 | #include <utility> |
50 | 50 |
|
| 51 | +#include <iostream> |
| 52 | + |
51 | 53 | const Token* findExpression(const nonneg int exprid, |
52 | 54 | const Token* start, |
53 | 55 | const Token* end, |
@@ -2479,12 +2481,20 @@ bool isMutableExpression(const Token* tok) |
2479 | 2481 | return false; |
2480 | 2482 | if (tok->isLiteral() || tok->isKeyword() || tok->isStandardType() || tok->isEnumerator()) |
2481 | 2483 | return false; |
| 2484 | + if (Token::Match(tok, "std :: %name%")) |
| 2485 | + return false; |
| 2486 | + if (Token::Match(tok->previous(), "std :: %name%")) |
| 2487 | + return false; |
| 2488 | + if (Token::Match(tok->tokAt(-2), "std :: %name%")) |
| 2489 | + return false; |
2482 | 2490 | if (Token::Match(tok, ",|;|:|]|)|}")) |
2483 | 2491 | return false; |
2484 | 2492 | if (Token::simpleMatch(tok, "[ ]")) |
2485 | 2493 | return false; |
2486 | | - if (tok->previous() && tok->previous()->isKeyword() && Token::Match(tok->previous(), "%name% (")) |
| 2494 | + if (tok->previous() && tok->previous()->exprId() == 0 && Token::Match(tok->previous(), "%name% (")) { |
| 2495 | + //std::cout << tok->strAt(-1) << std::endl; |
2487 | 2496 | return false; |
| 2497 | + } |
2488 | 2498 | if (tok->link() && Token::Match(tok, "<|>")) |
2489 | 2499 | return false; |
2490 | 2500 | if (tok->astOperand1() && Token::simpleMatch(tok, "[")) |
@@ -2920,7 +2930,10 @@ static bool isExpressionChangedAt(const F& getExprTok, |
2920 | 2930 | if (!expr && !(tok->valueType() && tok->valueType()->pointer == 0 && tok->valueType()->reference == Reference::None)) |
2921 | 2931 | aliased = true; |
2922 | 2932 | if (!aliased) |
| 2933 | + { |
| 2934 | + std::cout << tok->str() << " " << tok->exprId() << " " << exprid << " " << indirect << std::endl; |
2923 | 2935 | aliased = isAliasOf(tok, expr, &i); |
| 2936 | + } |
2924 | 2937 | if (!aliased) |
2925 | 2938 | return false; |
2926 | 2939 | if (isVariableChanged(tok, indirect + i, settings, depth)) |
|
0 commit comments