@@ -1104,6 +1104,10 @@ void Tokenizer::simplifyTypedef()
11041104 typedefInfo.filename = list.file (typedefToken);
11051105 typedefInfo.lineNumber = typedefToken->linenr ();
11061106 typedefInfo.column = typedefToken->column ();
1107+ if (Token::Match (typedefToken->next (), " struct|enum|class|union %name% {" ) && typedefToken->strAt (2 ) == typedefInfo.name ) {
1108+ typedefInfo.tagLine = typedefToken->tokAt (2 )->linenr ();
1109+ typedefInfo.tagColumn = typedefToken->tokAt (2 )->column ();
1110+ }
11071111 typedefInfo.used = t.second .isUsed ();
11081112 typedefInfo.isFunctionPointer = isFunctionPointer (t.second .nameToken ());
11091113 if (typedefInfo.isFunctionPointer ) {
@@ -1638,8 +1642,12 @@ void Tokenizer::simplifyTypedefCpp()
16381642 TypedefInfo typedefInfo;
16391643 typedefInfo.name = typeName->str ();
16401644 typedefInfo.filename = list.file (typeName);
1641- typedefInfo.lineNumber = typeName->linenr ();
1642- typedefInfo.column = typeName->column ();
1645+ typedefInfo.lineNumber = typeDef->linenr ();
1646+ typedefInfo.column = typeDef->column ();
1647+ if (Token::Match (typeDef->next (), " struct|enum|class|union %name% {" ) && typeDef->strAt (2 ) == typedefInfo.name ) {
1648+ typedefInfo.tagLine = typeDef->tokAt (2 )->linenr ();
1649+ typedefInfo.tagColumn = typeDef->tokAt (2 )->column ();
1650+ }
16431651 typedefInfo.used = false ;
16441652 typedefInfo.isFunctionPointer = isFunctionPointer (typeName);
16451653 if (typedefInfo.isFunctionPointer ) {
@@ -6361,7 +6369,15 @@ std::string Tokenizer::dumpTypedefInfo() const
63616369 outs += " column=\" " ;
63626370 outs += std::to_string (typedefInfo.column );
63636371 outs += " \" " ;
6372+ if (typedefInfo.tagLine > -1 && typedefInfo.tagColumn > -1 ) {
6373+ outs += " tagline=\" " ;
6374+ outs += std::to_string (typedefInfo.tagLine );
6375+ outs += " \" " ;
63646376
6377+ outs += " tagcolumn=\" " ;
6378+ outs += std::to_string (typedefInfo.tagColumn );
6379+ outs += " \" " ;
6380+ }
63656381 outs += " used=\" " ;
63666382 outs += std::to_string (typedefInfo.used ?1 :0 );
63676383 outs += " \" " ;
0 commit comments