================ @@ -0,0 +1,67 @@ +//===------- NondetermnisticPointerUsageCheck.cpp - clang-tidy ------------===// +// +// 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 "NondeterministicPointerUsageCheck.h" +#include "clang/AST/ASTContext.h" +#include "clang/Lex/Lexer.h" + +using namespace clang::ast_matchers; + +namespace clang::tidy::bugprone { + +void NondeterministicPointerUsageCheck::registerMatchers(MatchFinder *Finder) { + + auto LoopVariable = varDecl(hasType(hasCanonicalType(pointerType()))); + + auto RangeInit = declRefExpr(to(varDecl(hasType(recordDecl( + anyOf(hasName("std::unordered_set"), hasName("std::unordered_map"), + hasName("std::unordered_multiset"), + hasName("std::unordered_multimap"))))))); + + Finder->addMatcher( + stmt(cxxForRangeStmt(hasRangeInit(RangeInit.bind("rangeinit")), + hasLoopVariable(LoopVariable.bind("loopVar")))) + .bind("cxxForRangeStmt"), ---------------- 5chmidti wrote:
No need to wrap `cxxForRangeStmt` inside a `stmt` matcher that does nothing https://github.com/llvm/llvm-project/pull/110471 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits