================ @@ -0,0 +1,143 @@ +//===----------------------------------------------------------------------===// +// +// 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 "ShadowedNamespaceFunctionCheck.h" +#include "../utils/FixItHintUtils.h" +#include "clang/AST/ASTContext.h" +#include "clang/AST/Decl.h" +#include "clang/AST/DeclCXX.h" +#include "clang/ASTMatchers/ASTMatchers.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallPtrSet.h" + +using namespace clang; +using namespace clang::ast_matchers; +using namespace clang::tidy; + +namespace clang::tidy::misc { + +template <typename ContainerTy> +static auto makeCannonicalTypesRange(ContainerTy &&C) { + return llvm::map_range(C, [](const ParmVarDecl *Param) { + return Param->getType().getCanonicalType(); + }); +} + +static bool hasSameSignature(const FunctionDecl *Func1, + const FunctionDecl *Func2) { + if (Func1->param_size() != Func2->param_size()) + return false; + + if (Func1->getReturnType().getCanonicalType() != + Func2->getReturnType().getCanonicalType()) + return false; + + return llvm::equal(makeCannonicalTypesRange(Func1->parameters()), + makeCannonicalTypesRange(Func2->parameters())); +} + +static std::pair<const FunctionDecl *, const NamespaceDecl *> +findShadowedInNamespace(const NamespaceDecl *NS, const FunctionDecl *GlobalFunc, + StringRef GlobalFuncName, + llvm::SmallPtrSet<const FunctionDecl *, 16> &All) { + ---------------- vbvictor wrote:
```suggestion ``` Clang-format will flag it once rebase on main https://github.com/llvm/llvm-project/pull/168406 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
