blob: 43ff539c7adeeb94afcb8fedecfab728d5d4187e [file] [log] [blame]
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#pragma once
#include <clang-tidy/ClangTidyCheck.h>
#include <clang/ASTMatchers/ASTMatchFinder.h>
namespace clang {
namespace tidy {
namespace cmake {
class StringConcatenationUseCmstrcatCheck : public ClangTidyCheck
{
public:
StringConcatenationUseCmstrcatCheck(StringRef Name,
ClangTidyContext* Context);
void registerMatchers(ast_matchers::MatchFinder* Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult& Result) override;
private:
enum class OperatorType
{
Plus,
PlusEquals
};
typedef std::pair<OperatorType, std::vector<const CXXOperatorCallExpr*>>
ExprChain;
std::map<const CXXOperatorCallExpr*, ExprChain> InProgressExprChains;
void issueCorrection(const ExprChain& ExprChain,
const ast_matchers::MatchFinder::MatchResult& Result);
};
}
}
}