From 9ea852eb0e64d00c8878f08176bf8b9131b935c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 4 Jan 2009 17:23:04 +0000 Subject: [PATCH] Variable usage: Fixed false positives (tmp1 ? tmp2 : tmp3) --- checkother.cpp | 2 +- testunusedvar.cpp | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/checkother.cpp b/checkother.cpp index 48df6c0fc..b2a040a57 100644 --- a/checkother.cpp +++ b/checkother.cpp @@ -809,7 +809,7 @@ static bool isOp(const Token *tok) tok->str() == ">" || tok->str() == ">=" || tok->str() == "<<" || - Token::Match(tok, "[+-*/%&|,[])]"))); + Token::Match(tok, "[+-*/%&|,[])?:]"))); } void CheckOther::functionVariableUsage() diff --git a/testunusedvar.cpp b/testunusedvar.cpp index d98c52ebe..0ff2d16e4 100644 --- a/testunusedvar.cpp +++ b/testunusedvar.cpp @@ -64,8 +64,9 @@ private: TEST_CASE( localvar5 ); TEST_CASE( localvar6 ); - TEST_CASE( localvarMod ); // Usage with modulo - TEST_CASE( localvarIf ); // Usage in if + TEST_CASE( localvarMod ); // Usage with modulo + TEST_CASE( localvarIf ); // Usage in if + TEST_CASE( localvarIfElse ); // return tmp1 ? tmp2 : tmp3; } void structmember1() @@ -223,6 +224,18 @@ private: ASSERT_EQUALS( std::string(""), errout.str() ); } + void localvarIfElse() + { + functionVariableUsage( "int foo()\n" + "{\n" + " int tmp1 = 1;\n" + " int tmp2 = 2;\n" + " int tmp3 = 3;\n" + " return tmp1 ? tmp2 : tmp3;\n" + "}\n" ); + ASSERT_EQUALS( std::string(""), errout.str() ); + } + };