1 //===--- FloatLoopCounter.cpp - clang-tidy---------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "FloatLoopCounter.h" 11 #include "clang/AST/ASTContext.h" 12 #include "clang/ASTMatchers/ASTMatchFinder.h" 13 14 using namespace clang::ast_matchers; 15 16 namespace clang { 17 namespace tidy { 18 namespace cert { 19 20 void FloatLoopCounter::registerMatchers(MatchFinder *Finder) { 21 Finder->addMatcher( 22 forStmt(hasIncrement(expr(hasType(realFloatingPointType())))).bind("for"), 23 this); 24 } 25 26 void FloatLoopCounter::check(const MatchFinder::MatchResult &Result) { 27 const auto *FS = Result.Nodes.getNodeAs<ForStmt>("for"); 28 29 diag(FS->getInc()->getExprLoc(), "loop induction expression should not have " 30 "floating-point type"); 31 } 32 33 } // namespace cert 34 } // namespace tidy 35 } // namespace clang 36