preprocessor: Make sure that "#define ABC (a+b+c)" is expanded correctly
This commit is contained in:
parent
8785483878
commit
965daabe60
|
@ -466,6 +466,9 @@ public:
|
||||||
if (tokens() && tokens()->isName())
|
if (tokens() && tokens()->isName())
|
||||||
_name = tokens()->str();
|
_name = tokens()->str();
|
||||||
|
|
||||||
|
std::string::size_type pos = macro.find_first_of(" (");
|
||||||
|
if ( pos != std::string::npos && macro[pos] == '(' )
|
||||||
|
{
|
||||||
// Extract macro parameters
|
// Extract macro parameters
|
||||||
if (Token::Match(tokens(), "%var% ( %var%"))
|
if (Token::Match(tokens(), "%var% ( %var%"))
|
||||||
{
|
{
|
||||||
|
@ -477,7 +480,7 @@ public:
|
||||||
_params.push_back(tok->str());
|
_params.push_back(tok->str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Token *tokens() const
|
const Token *tokens() const
|
||||||
|
|
|
@ -75,6 +75,7 @@ private:
|
||||||
TEST_CASE(macro_simple3);
|
TEST_CASE(macro_simple3);
|
||||||
TEST_CASE(macro_simple4);
|
TEST_CASE(macro_simple4);
|
||||||
TEST_CASE(macro_simple5);
|
TEST_CASE(macro_simple5);
|
||||||
|
TEST_CASE(macro_simple6);
|
||||||
TEST_CASE(macro_mismatch);
|
TEST_CASE(macro_mismatch);
|
||||||
TEST_CASE(preprocessor_inside_string);
|
TEST_CASE(preprocessor_inside_string);
|
||||||
TEST_CASE(preprocessor_undef);
|
TEST_CASE(preprocessor_undef);
|
||||||
|
@ -486,6 +487,13 @@ private:
|
||||||
ASSERT_EQUALS("\n\nvoid foo()\n{\n int temp = 0;\n if( temp > 0 ) return 1;\n}\n", Preprocessor::expandMacros(filedata));
|
ASSERT_EQUALS("\n\nvoid foo()\n{\n int temp = 0;\n if( temp > 0 ) return 1;\n}\n", Preprocessor::expandMacros(filedata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void macro_simple6()
|
||||||
|
{
|
||||||
|
const char filedata[] = "#define ABC (a+b+c)\n"
|
||||||
|
"ABC";
|
||||||
|
ASSERT_EQUALS("\n(a+b+c)", Preprocessor::expandMacros(filedata));
|
||||||
|
}
|
||||||
|
|
||||||
void macro_mismatch()
|
void macro_mismatch()
|
||||||
{
|
{
|
||||||
const char filedata[] = "#define AAA(aa,bb) f(aa)\n"
|
const char filedata[] = "#define AAA(aa,bb) f(aa)\n"
|
||||||
|
|
Loading…
Reference in New Issue