From 3fe46239cfa6ca2101153496cbfed34de875dcd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 3 Sep 2020 11:21:12 +0200 Subject: [PATCH] SymbolDatabase; Refactoring, use Tokenizer::isFunctionHead to skip function attributes --- lib/symboldatabase.cpp | 11 ++++------- test/testsymboldatabase.cpp | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 15877659d..67d54df65 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -2637,9 +2637,8 @@ void SymbolDatabase::addClassFunction(Scope **scope, const Token **tok, const To if (!func->hasBody()) { const Token *closeParen = (*tok)->next()->link(); if (closeParen) { - if (Token::Match(closeParen, ") noexcept| = default ;") || - (Token::simpleMatch(closeParen, ") noexcept (") && - Token::simpleMatch(closeParen->linkAt(2), ") = default ;"))) { + const Token *eq = mTokenizer->isFunctionHead(closeParen, ";"); + if (eq && Token::simpleMatch(eq->tokAt(-2), "= default ;")) { func->isDefault(true); return; } @@ -2711,10 +2710,8 @@ void SymbolDatabase::addClassFunction(Scope **scope, const Token **tok, const To // normal function? const Token *closeParen = (*tok)->next()->link(); if (closeParen) { - if (Token::Match(closeParen, ") noexcept| = default ;") || - Token::Match(closeParen, ") . const| %type% &| = default ;") || - (Token::simpleMatch(closeParen, ") noexcept (") && - Token::simpleMatch(closeParen->linkAt(2), ") = default ;"))) { + const Token *eq = mTokenizer->isFunctionHead(closeParen, ";"); + if (eq && Token::simpleMatch(eq->tokAt(-2), "= default ;")) { func->isDefault(true); return; } diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index cdea9a54c..6f29498b1 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -4613,7 +4613,7 @@ private: void symboldatabase86() { GET_SYMBOL_DB("class C { auto operator=(const C&) -> C&; };\n" - "auto C::operator=(const C&) -> C& = default;"); + "auto C::operator=(const C&) -> C& = default;"); ASSERT(db->scopeList.size() == 2); ASSERT(db->scopeList.back().functionList.size() == 1); ASSERT(db->scopeList.back().functionList.front().isDefault() == true);