diff --git a/lib/astutils.cpp b/lib/astutils.cpp index f55164f62fa..8c9b81f1e8d 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -1203,6 +1203,8 @@ static const Token * followVariableExpression(const Settings& settings, const To return tok; if (hasUnknownVars(varTok)) return tok; + if (astIsRangeBasedForDecl(var->nameToken())) + return tok; if (var->isVolatile()) return tok; if (!var->isLocal() && !var->isConst()) diff --git a/test/testother.cpp b/test/testother.cpp index 4cef19c0575..6398cd37cbb 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -8021,6 +8021,15 @@ class TestOther : public TestFixture { " }\n" "}\n"); ASSERT_EQUALS("", errout_str()); + + check("void f(const std::vector& v) {\n" // #14193 + " for (const int& r1 : v) {\n" + " for (const int& r2 : v) {\n" + " if (&r1 == &r2) {}\n" + " }\n" + " }\n" + "}\n"); + ASSERT_EQUALS("", errout_str()); } void duplicateExpressionTernary() { // #6391