From c5a512338e9c60b406b9c499860133eb26158794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 3 Mar 2019 20:18:19 +0100 Subject: [PATCH] --check-headers=no: remove more templates in headers that are not used in the source file --- lib/tokenize.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index d1886ff3e..de32cf8cd 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -4327,24 +4327,26 @@ void Tokenizer::simplifyHeaders() Token::eraseTokens(tok, endToken->link()->next()); } - if (Token::simpleMatch(tok->next(), "template <")) { + if (Token::Match(tok->next(), "template < %name%")) { const Token *tok2 = tok->tokAt(3); - while (Token::Match(tok2, "%name% %name% ,")) - tok2 = tok2->tokAt(3); - if (Token::Match(tok2, "%name% %name% >")) { - tok2 = tok2->tokAt(3); - if (Token::Match(tok2, "class|struct %name% [;:{]") && keep.find(tok2->strAt(1)) == keep.end()) { - const Token *endToken = tok2->tokAt(2); - if (endToken->str() == ":") { + while (Token::Match(tok2, "%name% %name% [,=>]")) { + tok2 = tok2->tokAt(2); + if (Token::Match(tok2, "= %name% [,>]")) + tok2 = tok2->tokAt(2); + if (tok2->str() == ",") + tok2 = tok2->next(); + } + if (Token::Match(tok2, "> class|struct %name% [;:{]") && keep.find(tok2->strAt(2)) == keep.end()) { + const Token *endToken = tok2->tokAt(3); + if (endToken->str() == ":") { + endToken = endToken->next(); + while (Token::Match(endToken, "%name%|,")) endToken = endToken->next(); - while (Token::Match(endToken, "%name%|,")) - endToken = endToken->next(); - } - if (endToken && endToken->str() == "{") - endToken = endToken->link()->next(); - if (endToken && endToken->str() == ";") - Token::eraseTokens(tok, endToken); } + if (endToken && endToken->str() == "{") + endToken = endToken->link()->next(); + if (endToken && endToken->str() == ";") + Token::eraseTokens(tok, endToken); } } }