From f1c04035a60fa098f0d7cc3dac760781a3fb0e84 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sat, 3 Jun 2023 13:56:37 +0200 Subject: [PATCH] CPlusPlus: Reuse QScopeGuard instead of ExecuteOnDestruction Change-Id: Ifb2cf839777c18b4f66a88b7f5106f05148b0c20 Reviewed-by: hjk Reviewed-by: Qt CI Bot Reviewed-by: --- src/libs/3rdparty/cplusplus/Lexer.cpp | 10 +++++----- src/libs/cplusplus/pp-engine.cpp | 17 +++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Lexer.cpp b/src/libs/3rdparty/cplusplus/Lexer.cpp index fc1b72cb7db..deafe432b6a 100644 --- a/src/libs/3rdparty/cplusplus/Lexer.cpp +++ b/src/libs/3rdparty/cplusplus/Lexer.cpp @@ -25,7 +25,7 @@ #include "cppassert.h" -#include +#include #include @@ -756,9 +756,9 @@ void Lexer::scanStringLiteral(Token *tok, unsigned char hint) void Lexer::scanRawStringLiteral(Token *tok, unsigned char hint) { - Utils::ExecuteOnDestruction suffixCleaner; - if (!control()) - suffixCleaner.reset([this] { _expectedRawStringSuffix.clear(); }); + QScopeGuard cleanup([this] { _expectedRawStringSuffix.clear(); }); + if (control()) + cleanup.dismiss(); const char *yytext = _currentChar; @@ -827,7 +827,7 @@ void Lexer::scanRawStringLiteral(Token *tok, unsigned char hint) tok->f.kind = T_RAW_STRING_LITERAL; if (!control() && !closed) { - suffixCleaner.reset([]{}); + cleanup.dismiss(); s._tokenKind = tok->f.kind; _expectedRawStringSuffix.prepend(')'); _expectedRawStringSuffix.append('"'); diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index ef27d9eace8..f4e8dbdbd0c 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -40,6 +39,7 @@ #include #include #include +#include #include #include @@ -1513,14 +1513,15 @@ bool Preprocessor::collectActualArguments(PPToken *tk, QVector Q_ASSERT(tk); Q_ASSERT(actuals); - ExecuteOnDestruction removeBlockedName; - if (m_state.m_tokenBuffer) { - removeBlockedName.reset([this] { - if (m_state.m_tokenBuffer && !m_state.m_tokenBuffer->blockedMacroNames.empty()) - m_state.m_tokenBuffer->blockedMacroNames.pop_back(); - }); + QScopeGuard cleanup([this] { + if (m_state.m_tokenBuffer && !m_state.m_tokenBuffer->blockedMacroNames.empty()) + m_state.m_tokenBuffer->blockedMacroNames.pop_back(); + }); + + if (m_state.m_tokenBuffer) m_state.m_tokenBuffer->blockedMacroNames.push_back(parentMacroName); - } + else + cleanup.dismiss(); lex(tk); // consume the identifier