Fixed #1015 (SIGABRT: Tokenizer::validate for openttd/src/ai/ai_config.cpp)
This commit is contained in:
parent
7616246597
commit
c94ecfe1a3
|
@ -408,7 +408,7 @@ void Tokenizer::simplifyTypedef()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string pattern = className + " :: " + typeName;
|
const std::string pattern(className.empty() ? std::string("") : className + " :: " + typeName);
|
||||||
int level = 0;
|
int level = 0;
|
||||||
bool inScope = true;
|
bool inScope = true;
|
||||||
|
|
||||||
|
@ -431,7 +431,7 @@ void Tokenizer::simplifyTypedef()
|
||||||
}
|
}
|
||||||
else if (tok2->str() == "{")
|
else if (tok2->str() == "{")
|
||||||
++level;
|
++level;
|
||||||
else if (Token::Match(tok2, pattern.c_str()))
|
else if (!pattern.empty() && Token::Match(tok2, pattern.c_str()))
|
||||||
{
|
{
|
||||||
tok2->deleteNext();
|
tok2->deleteNext();
|
||||||
tok2->deleteNext();
|
tok2->deleteNext();
|
||||||
|
@ -439,7 +439,11 @@ void Tokenizer::simplifyTypedef()
|
||||||
}
|
}
|
||||||
else if (inScope && !exitThisScope && tok2->str() == typeName)
|
else if (inScope && !exitThisScope && tok2->str() == typeName)
|
||||||
{
|
{
|
||||||
if (Token::Match(tok2->tokAt(-2), "!!typedef") &&
|
if (Token::simpleMatch(tok2->previous(), "::"))
|
||||||
|
{
|
||||||
|
// Don't replace this typename if it's preceded by "::"
|
||||||
|
}
|
||||||
|
else if (Token::Match(tok2->tokAt(-2), "!!typedef") &&
|
||||||
Token::Match(tok2->tokAt(-3), "!!typedef"))
|
Token::Match(tok2->tokAt(-3), "!!typedef"))
|
||||||
{
|
{
|
||||||
simplifyType = true;
|
simplifyType = true;
|
||||||
|
|
|
@ -136,8 +136,9 @@ private:
|
||||||
TEST_CASE(simplifyTypedef4)
|
TEST_CASE(simplifyTypedef4)
|
||||||
TEST_CASE(simplifyTypedef5)
|
TEST_CASE(simplifyTypedef5)
|
||||||
TEST_CASE(simplifyTypedef6)
|
TEST_CASE(simplifyTypedef6)
|
||||||
|
TEST_CASE(simplifyTypedef7);
|
||||||
TEST_CASE(reverseArraySyntax)
|
TEST_CASE(reverseArraySyntax)
|
||||||
TEST_CASE(simplify_numeric_condition);
|
TEST_CASE(simplify_numeric_condition)
|
||||||
|
|
||||||
TEST_CASE(pointeralias);
|
TEST_CASE(pointeralias);
|
||||||
|
|
||||||
|
@ -2138,6 +2139,13 @@ private:
|
||||||
ASSERT_EQUALS(expected, tok(code, false));
|
ASSERT_EQUALS(expected, tok(code, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplifyTypedef7()
|
||||||
|
{
|
||||||
|
const char code[] = "typedef int abc ; "
|
||||||
|
"Fred :: abc f ;";
|
||||||
|
ASSERT_EQUALS(code, tok(code, false));
|
||||||
|
}
|
||||||
|
|
||||||
void reverseArraySyntax()
|
void reverseArraySyntax()
|
||||||
{
|
{
|
||||||
ASSERT_EQUALS("a [ 13 ]", tok("13[a]"));
|
ASSERT_EQUALS("a [ 13 ]", tok("13[a]"));
|
||||||
|
|
Loading…
Reference in New Issue