1234567891011121314151617181920212223242526272829303132333435 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file LICENSE.rst or https://cmake.org/licensing for details. */
- #include "UseBespokeEnumClassCheck.h"
- #include <clang/AST/Type.h>
- #include <clang/ASTMatchers/ASTMatchFinder.h>
- namespace clang {
- namespace tidy {
- namespace cmake {
- using namespace ast_matchers;
- UseBespokeEnumClassCheck::UseBespokeEnumClassCheck(StringRef Name,
- ClangTidyContext* Context)
- : ClangTidyCheck(Name, Context)
- {
- }
- void UseBespokeEnumClassCheck::registerMatchers(MatchFinder* Finder)
- {
- Finder->addMatcher(
- parmVarDecl(
- hasTypeLoc(typeLoc(loc(qualType(asString("_Bool")))).bind("type"))),
- this);
- }
- void UseBespokeEnumClassCheck::check(MatchFinder::MatchResult const& Result)
- {
- TypeLoc const* Node = Result.Nodes.getNodeAs<TypeLoc>("type");
- this->diag(Node->getBeginLoc(),
- "use a bespoke enum class instead of booleans as parameters");
- }
- }
- }
- }
|