Fixed #4947 (Doesn't allow any ordering of int modifiers)
This commit is contained in:
parent
4c7e92f67b
commit
b940d0adc6
|
@ -5565,18 +5565,41 @@ void Tokenizer::simplifyStdType()
|
||||||
else if (tok->str() == "__int64") {
|
else if (tok->str() == "__int64") {
|
||||||
tok->str("long");
|
tok->str("long");
|
||||||
tok->isLong(true);
|
tok->isLong(true);
|
||||||
|
} else if (tok->str() == "int") {
|
||||||
|
if (tok->strAt(1) == "long") {
|
||||||
|
tok->str("long");
|
||||||
|
tok->deleteNext();
|
||||||
|
}
|
||||||
|
if (tok->strAt(1) == "long") {
|
||||||
|
tok->isLong(true);
|
||||||
|
tok->deleteNext();
|
||||||
|
}
|
||||||
|
if (tok->strAt(1) == "unsigned") {
|
||||||
|
tok->isUnsigned(true);
|
||||||
|
tok->deleteNext();
|
||||||
|
if (tok->strAt(1) == "long")
|
||||||
|
tok->deleteNext();
|
||||||
|
}
|
||||||
} else if (tok->str() == "long") {
|
} else if (tok->str() == "long") {
|
||||||
if (tok->strAt(1) == "long") {
|
if (tok->strAt(1) == "long") {
|
||||||
tok->isLong(true);
|
tok->isLong(true);
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
}
|
}
|
||||||
|
if (tok->strAt(1) == "int") {
|
||||||
if (tok->strAt(1) == "int")
|
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
else if (tok->strAt(1) == "double") {
|
if (tok->strAt(1) == "unsigned") {
|
||||||
|
tok->isUnsigned(true);
|
||||||
|
tok->deleteNext();
|
||||||
|
}
|
||||||
|
} else if (tok->strAt(1) == "double") {
|
||||||
tok->str("double");
|
tok->str("double");
|
||||||
tok->isLong(true);
|
tok->isLong(true);
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
|
} else if (tok->strAt(1) == "unsigned") {
|
||||||
|
tok->isUnsigned(true);
|
||||||
|
tok->deleteNext();
|
||||||
|
if (tok->strAt(1) == "int")
|
||||||
|
tok->deleteNext();
|
||||||
}
|
}
|
||||||
} else if (tok->str() == "short") {
|
} else if (tok->str() == "short") {
|
||||||
if (tok->strAt(1) == "int")
|
if (tok->strAt(1) == "int")
|
||||||
|
|
|
@ -386,6 +386,8 @@ private:
|
||||||
TEST_CASE(unsigned2);
|
TEST_CASE(unsigned2);
|
||||||
TEST_CASE(unsigned3); // template arguments
|
TEST_CASE(unsigned3); // template arguments
|
||||||
|
|
||||||
|
TEST_CASE(simplifyStdType); // #4947
|
||||||
|
|
||||||
TEST_CASE(createLinks);
|
TEST_CASE(createLinks);
|
||||||
TEST_CASE(signed1);
|
TEST_CASE(signed1);
|
||||||
|
|
||||||
|
@ -6138,6 +6140,39 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplifyStdType() { // #4947
|
||||||
|
{
|
||||||
|
const char code[] = "long long unsigned int x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "long long int unsigned x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "unsigned long long int x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "unsigned int long long x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "int unsigned long long x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char code[] = "int long long unsigned x;";
|
||||||
|
const char expected[] = "unsigned long long x ;";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void createLinks() {
|
void createLinks() {
|
||||||
{
|
{
|
||||||
const char code[] = "class A{\n"
|
const char code[] = "class A{\n"
|
||||||
|
|
Loading…
Reference in New Issue