@@ -2650,6 +2650,22 @@ namespace {
2650
2650
return false ;
2651
2651
}
2652
2652
2653
+ if (Token::Match (tok1, " %name% (" ) && TokenList::isFunctionHead (tok1->next (), " {;:" )) {
2654
+ if (Token::Match (tok1->previous (), " %name%" ) && !tok1->previous ()->isControlFlowKeyword ())
2655
+ return false ;
2656
+ if (Token::Match (tok1->previous (), " >|>>" ) && tok1->linkAt (-1 ))
2657
+ return false ;
2658
+ if (Token::Match (tok1->previous (), " *|&|&&" )) {
2659
+ const Token* prev = tok1->previous ();
2660
+ while (Token::Match (prev, " %name%|*|&|&&|::" ) && !prev->isControlFlowKeyword ())
2661
+ prev = prev->previous ();
2662
+ if (Token::Match (prev, " >|>>" ) && tok1->linkAt (-1 ))
2663
+ return false ;
2664
+ if (Token::Match (prev, " [;{}] %name%" ))
2665
+ return false ;
2666
+ }
2667
+ }
2668
+
2653
2669
// get qualification
2654
2670
std::string qualification;
2655
2671
const Token* tok2 = tok1;
@@ -3027,6 +3043,8 @@ bool Tokenizer::simplifyUsing()
3027
3043
}
3028
3044
}
3029
3045
3046
+ bool isTypedefInfoAdded = false ; // TODO should we add a separate mUsingInfo?
3047
+
3030
3048
std::string scope1 = currentScope1->fullName ;
3031
3049
bool skip = false ; // don't erase type aliases we can't parse
3032
3050
Token *enumOpenBrace = nullptr ;
@@ -3097,6 +3115,18 @@ bool Tokenizer::simplifyUsing()
3097
3115
} else if (!usingMatch (nameToken, scope, tok1, scope1, currentScope1, nullptr ))
3098
3116
continue ;
3099
3117
3118
+ if (!isTypedefInfoAdded && Token::Match (tok1, " %name% (" )) {
3119
+ isTypedefInfoAdded = true ;
3120
+ TypedefInfo usingInfo;
3121
+ usingInfo.name = name;
3122
+ usingInfo.filename = list.file (nameToken);
3123
+ usingInfo.lineNumber = nameToken->linenr ();
3124
+ usingInfo.column = nameToken->column ();
3125
+ usingInfo.used = true ;
3126
+ usingInfo.isFunctionPointer = false ;
3127
+ mTypedefInfo .push_back (std::move (usingInfo));
3128
+ }
3129
+
3100
3130
const auto nReplace = tokDistance (start, usingEnd);
3101
3131
if (nReplace > maxReplacementTokens) {
3102
3132
simplifyUsingError (usingStart, usingEnd);
0 commit comments