brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · d6edd99 Raw
77 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REDUNDANTVOIDARGCHECK_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REDUNDANTVOIDARGCHECK_H11 12#include "../ClangTidyCheck.h"13#include "clang/Lex/Token.h"14 15#include <string>16 17namespace clang::tidy::modernize {18 19/// Find and remove redundant void argument lists.20///21/// Examples:22///   `int f(void);`                    becomes `int f();`23///   `int (*f(void))(void);`           becomes `int (*f())();`24///   `typedef int (*f_t(void))(void);` becomes `typedef int (*f_t())();`25///   `void (C::*p)(void);`             becomes `void (C::*p)();`26///   `C::C(void) {}`                   becomes `C::C() {}`27///   `C::~C(void) {}`                  becomes `C::~C() {}`28///29class RedundantVoidArgCheck : public ClangTidyCheck {30public:31  RedundantVoidArgCheck(StringRef Name, ClangTidyContext *Context)32      : ClangTidyCheck(Name, Context) {}33 34  bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {35    return LangOpts.CPlusPlus;36  }37 38  void registerMatchers(ast_matchers::MatchFinder *Finder) override;39 40  void check(const ast_matchers::MatchFinder::MatchResult &Result) override;41 42private:43  void processFunctionDecl(const ast_matchers::MatchFinder::MatchResult &Result,44                           const FunctionDecl *Function);45 46  void47  processTypedefNameDecl(const ast_matchers::MatchFinder::MatchResult &Result,48                         const TypedefNameDecl *Typedef);49 50  void processFieldDecl(const ast_matchers::MatchFinder::MatchResult &Result,51                        const FieldDecl *Member);52 53  void processVarDecl(const ast_matchers::MatchFinder::MatchResult &Result,54                      const VarDecl *Var);55 56  void57  processNamedCastExpr(const ast_matchers::MatchFinder::MatchResult &Result,58                       const CXXNamedCastExpr *NamedCast);59 60  void61  processExplicitCastExpr(const ast_matchers::MatchFinder::MatchResult &Result,62                          const ExplicitCastExpr *ExplicitCast);63 64  void processLambdaExpr(const ast_matchers::MatchFinder::MatchResult &Result,65                         const LambdaExpr *Lambda);66 67  void68  removeVoidArgumentTokens(const ast_matchers::MatchFinder::MatchResult &Result,69                           SourceRange Range, StringRef GrammarLocation);70 71  void removeVoidToken(Token VoidToken, StringRef Diagnostic);72};73 74} // namespace clang::tidy::modernize75 76#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REDUNDANTVOIDARGCHECK_H77