Fixed #8085 (Token::expressionString: unsigned long long)
This commit is contained in:
parent
76a50e60b9
commit
255d0410a4
|
@ -1202,15 +1202,20 @@ static const Token* goToRightParenthesis(const Token* start, const Token* end)
|
||||||
static std::string stringFromTokenRange(const Token* start, const Token* end)
|
static std::string stringFromTokenRange(const Token* start, const Token* end)
|
||||||
{
|
{
|
||||||
std::ostringstream ret;
|
std::ostringstream ret;
|
||||||
|
if (end)
|
||||||
|
end = end->next();
|
||||||
for (const Token *tok = start; tok && tok != end; tok = tok->next()) {
|
for (const Token *tok = start; tok && tok != end; tok = tok->next()) {
|
||||||
if (tok->originalName() == "->")
|
if (tok->isUnsigned())
|
||||||
ret << "->";
|
ret << "unsigned ";
|
||||||
else
|
if (tok->isLong())
|
||||||
|
ret << (tok->isLiteral() ? "L" : "long ");
|
||||||
|
if (tok->originalName().empty()) {
|
||||||
ret << tok->str();
|
ret << tok->str();
|
||||||
|
} else
|
||||||
|
ret << tok->originalName();
|
||||||
if (Token::Match(tok, "%name%|%num% %name%|%num%"))
|
if (Token::Match(tok, "%name%|%num% %name%|%num%"))
|
||||||
ret << ' ';
|
ret << ' ';
|
||||||
}
|
}
|
||||||
ret << end->str();
|
|
||||||
return ret.str();
|
return ret.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1892,7 +1892,7 @@ private:
|
||||||
" int x = 'd' ? 1 : 2;\n"
|
" int x = 'd' ? 1 : 2;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:2]: (style) Condition ''a'' is always true\n"
|
ASSERT_EQUALS("[test.cpp:2]: (style) Condition ''a'' is always true\n"
|
||||||
"[test.cpp:3]: (style) Condition ''b'' is always true\n"
|
"[test.cpp:3]: (style) Condition 'L'b'' is always true\n"
|
||||||
"[test.cpp:4]: (style) Condition ''c'' is always true\n"
|
"[test.cpp:4]: (style) Condition ''c'' is always true\n"
|
||||||
"[test.cpp:5]: (style) Condition ''d'' is always true\n", errout.str());
|
"[test.cpp:5]: (style) Condition ''d'' is always true\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,8 @@ private:
|
||||||
TEST_CASE(canFindMatchingBracketsOuterPair);
|
TEST_CASE(canFindMatchingBracketsOuterPair);
|
||||||
TEST_CASE(canFindMatchingBracketsWithTooManyClosing);
|
TEST_CASE(canFindMatchingBracketsWithTooManyClosing);
|
||||||
TEST_CASE(canFindMatchingBracketsWithTooManyOpening);
|
TEST_CASE(canFindMatchingBracketsWithTooManyOpening);
|
||||||
|
|
||||||
|
TEST_CASE(expressionString);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nextprevious() const {
|
void nextprevious() const {
|
||||||
|
@ -945,6 +947,16 @@ private:
|
||||||
t = var.tokens()->tokAt(4)->findClosingBracket();
|
t = var.tokens()->tokAt(4)->findClosingBracket();
|
||||||
ASSERT(t == nullptr);
|
ASSERT(t == nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void expressionString() {
|
||||||
|
givenACodeSampleToTokenize var1("void f() { *((unsigned long long *)x) = 0; }");
|
||||||
|
const Token *tok1 = Token::findsimplematch(var1.tokens(), "*");
|
||||||
|
ASSERT_EQUALS("*((unsigned long long*)x)", tok1->expressionString());
|
||||||
|
|
||||||
|
givenACodeSampleToTokenize var2("typedef unsigned long long u64; void f() { *((u64 *)x) = 0; }");
|
||||||
|
const Token *tok2 = Token::findsimplematch(var2.tokens(), "*");
|
||||||
|
ASSERT_EQUALS("*((unsigned long long*)x)", tok2->expressionString());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestToken)
|
REGISTER_TEST(TestToken)
|
||||||
|
|
Loading…
Reference in New Issue