Added test case from #3533 (segmentation fault of cppcheck).

This commit is contained in:
Edoardo Prezioso 2012-01-31 18:23:02 +01:00
parent 86a5a9a7bf
commit f8578a380a
1 changed files with 37 additions and 27 deletions

View File

@ -365,6 +365,7 @@ private:
TEST_CASE(simplifyStructDecl2); // ticket #2579 TEST_CASE(simplifyStructDecl2); // ticket #2579
TEST_CASE(simplifyStructDecl3); TEST_CASE(simplifyStructDecl3);
TEST_CASE(simplifyStructDecl4); TEST_CASE(simplifyStructDecl4);
TEST_CASE(simplifyStructDecl5); // ticket #3533 (segmentation fault)
// register int var; => int var; // register int var; => int var;
// inline int foo() {} => int foo() {} // inline int foo() {} => int foo() {}
@ -7375,33 +7376,42 @@ private:
} }
void simplifyStructDecl4() { void simplifyStructDecl4() {
{ const char code[] = "class ABC {\n"
const char code[] = "class ABC {\n" " void foo() {\n"
" void foo() {\n" " union {\n"
" union {\n" " int i;\n"
" int i;\n" " float f;\n"
" float f;\n" " };\n"
" };\n" " struct Fee { } fee;\n"
" struct Fee { } fee;\n" " }\n"
" }\n" " union {\n"
" union {\n" " long long ll;\n"
" long long ll;\n" " double d;\n"
" double d;\n" " };\n"
" };\n" "} abc;\n";
"} abc;\n"; const char expected[] = "class ABC { "
const char expected[] = "class ABC { " "void foo ( ) { "
"void foo ( ) { " "int i ; "
"int i ; " "float & f = i ; "
"float & f = i ; " "struct Fee { } ; Fee fee ; "
"struct Fee { } ; Fee fee ; " "} "
"} " "union { "
"union { " "long long ll ; "
"long long ll ; " "double d ; "
"double d ; " "} ; "
"} ; " "} ; ABC abc ;";
"} ; ABC abc ;"; ASSERT_EQUALS(expected, tok(code, false));
ASSERT_EQUALS(expected, tok(code, false)); }
}
void simplifyStructDecl5() {
const char code[] = "<class T>\n"
"{\n"
" struct {\n"
" typename D4:typename Base<T*>\n"
" };\n"
"};\n";
//don't crash
tok(code, false);
} }
void removeUnwantedKeywords() { void removeUnwantedKeywords() {