
Previously, the implementation used the printed type, which contains expanded macro arguments, deletes comments, and removes function argument names from the alias declaration. Instead, this check can be more surgical and use the actual written type verbatim. Fixes #33760 Fixes #37846 Fixes #41685 Fixes #83568 Fixes #95716 Fixes #97009
44 lines
1.5 KiB
C++
44 lines
1.5 KiB
C++
//===--- UseUsingCheck.h - clang-tidy----------------------------*- C++ -*-===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_USING_H
|
|
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_USING_H
|
|
|
|
#include "../ClangTidyCheck.h"
|
|
|
|
namespace clang::tidy::modernize {
|
|
|
|
/// Check finds typedefs and replaces it with usings.
|
|
///
|
|
/// For the user-facing documentation see:
|
|
/// http://clang.llvm.org/extra/clang-tidy/checks/modernize/use-using.html
|
|
class UseUsingCheck : public ClangTidyCheck {
|
|
|
|
const bool IgnoreMacros;
|
|
const bool IgnoreExternC;
|
|
SourceLocation LastReplacementEnd;
|
|
llvm::DenseMap<const Decl *, SourceRange> LastTagDeclRanges;
|
|
|
|
std::string FirstTypedefType;
|
|
std::string FirstTypedefName;
|
|
SourceLocation MainTypeEndLoc;
|
|
|
|
public:
|
|
UseUsingCheck(StringRef Name, ClangTidyContext *Context);
|
|
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
|
|
return LangOpts.CPlusPlus11;
|
|
}
|
|
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
|
|
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
|
|
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
|
|
};
|
|
|
|
} // namespace clang::tidy::modernize
|
|
|
|
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_USING_H
|