@@ -241,6 +241,8 @@ class TestSimplifyTypedef : public TestFixture {
241241 TEST_CASE (simplifyTypedefMacro);
242242
243243 TEST_CASE (simplifyTypedefOriginalName);
244+
245+ TEST_CASE (typedefInfo1);
244246 }
245247
246248#define tok (...) tok_(__FILE__, __LINE__, __VA_ARGS__)
@@ -307,6 +309,22 @@ class TestSimplifyTypedef : public TestFixture {
307309 return tokenizer.tokens ()->stringifyList (nullptr , false );
308310 }
309311
312+ std::string dumpTypedefInfo (const char code[]) {
313+ Tokenizer tokenizer (settings1, *this );
314+
315+ std::istringstream istr (code);
316+ if (!tokenizer.list .createTokens (istr, " file.c" ))
317+ return {};
318+ tokenizer.createLinks ();
319+ tokenizer.simplifyTypedef ();
320+ try {
321+ tokenizer.validate ();
322+ } catch (const InternalError&) {
323+ return {};
324+ }
325+ return tokenizer.dumpTypedefInfo ();
326+ }
327+
310328 void c1 () {
311329 const char code[] = " typedef int t;\n "
312330 " t x;" ;
@@ -4380,6 +4398,14 @@ class TestSimplifyTypedef : public TestFixture {
43804398 token = Token::findsimplematch (endOfTypeDef, " *" , tokenizer.list .back ());
43814399 ASSERT_EQUALS (" rFunctionPointer_fp" , token->originalName ());
43824400 }
4401+
4402+ void typedefInfo1 () {
4403+ const std::string xml = dumpTypedefInfo (" typedef int A;\n A x;" );
4404+ ASSERT_EQUALS (" <typedef-info>\n "
4405+ " <info name=\" A\" file=\" file.c\" line=\" 1\" column=\" 1\" used=\" 1\" />\n "
4406+ " </typedef-info>\n " ,
4407+ xml);
4408+ }
43834409};
43844410
43854411REGISTER_TEST (TestSimplifyTypedef)
0 commit comments