================ @@ -0,0 +1,147 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "UseIfConstevalCheck.h" + +#include "../utils/BracesAroundStatement.h" +#include "clang/ASTMatchers/ASTMatchFinder.h" +#include "clang/Basic/CharInfo.h" +#include "clang/Lex/Lexer.h" + +using namespace clang::ast_matchers; + +namespace clang::tidy::modernize { + +namespace { + +struct BraceFix { + bool NeedsBraces = false; + utils::BraceInsertionHints Hints; +}; + +} // namespace + +static std::optional<SourceRange> getHeaderRange(const IfStmt *If, + const SourceManager &SM, + const LangOptions &LangOpts) { + if (If->getLParenLoc().isMacroID() || If->getRParenLoc().isMacroID()) + return std::nullopt; + + const SourceRange HeaderRange(If->getLParenLoc(), If->getRParenLoc()); + // Validate that the token range is safely rewriteable in file source before + // offering a fix-it. + if (Lexer::makeFileCharRange(CharSourceRange::getTokenRange(HeaderRange), SM, + LangOpts) + .isInvalid()) + return std::nullopt; + return HeaderRange; +} + +static std::optional<BraceFix> +getBraceFix(const Stmt *S, const LangOptions &LangOpts, const SourceManager &SM, + SourceLocation StartLoc, + SourceLocation EndLocHint = SourceLocation()) { + if (S) + S = S->stripLabelLikeStatements(); ---------------- unterumarmung wrote:
Done https://github.com/llvm/llvm-project/pull/189743 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
