================ @@ -0,0 +1,74 @@ +//===--- FunctionVisibilityChangeCheck.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 "FunctionVisibilityChangeCheck.h" +#include "clang/ASTMatchers/ASTMatchFinder.h" + +using namespace clang::ast_matchers; + +namespace clang::tidy::bugprone { + +void FunctionVisibilityChangeCheck::registerMatchers(MatchFinder *Finder) { + Finder->addMatcher( + cxxMethodDecl( + ofClass(cxxRecordDecl().bind("class")), + forEachOverridden(cxxMethodDecl(ofClass(cxxRecordDecl().bind("base"))) + .bind("base_func"))) + .bind("func"), + this); +} + +void FunctionVisibilityChangeCheck::check( + const MatchFinder::MatchResult &Result) { + const auto *MatchedFunction = Result.Nodes.getNodeAs<FunctionDecl>("func"); + const auto *ParentClass = Result.Nodes.getNodeAs<CXXRecordDecl>("class"); + const auto *OverriddenFunction = + Result.Nodes.getNodeAs<FunctionDecl>("base_func"); + const auto *BaseClass = Result.Nodes.getNodeAs<CXXRecordDecl>("base"); + + if (!MatchedFunction->isCanonicalDecl()) + return; ---------------- vbvictor wrote:
nit: Consider moving this lines before `const auto *ParentClass` declaration as not to declare unused variables https://github.com/llvm/llvm-project/pull/140086 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits