Mercurial > hg > CbC > CbC_llvm
diff clang-tools-extra/clang-tidy/utils/FixItHintUtils.h @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 2e18cbf3894f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang-tools-extra/clang-tidy/utils/FixItHintUtils.h Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,57 @@ +//===--- FixItHintUtils.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_UTILS_FIXITHINTUTILS_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_FIXITHINTUTILS_H + +#include "clang/AST/ASTContext.h" +#include "clang/AST/Decl.h" +#include "clang/Sema/DeclSpec.h" + +namespace clang { +namespace tidy { +namespace utils { +namespace fixit { + +/// Creates fix to make ``VarDecl`` a reference by adding ``&``. +FixItHint changeVarDeclToReference(const VarDecl &Var, ASTContext &Context); + +/// Creates fix to make ``VarDecl`` const qualified. +FixItHint changeVarDeclToConst(const VarDecl &Var); + +/// This enum defines where the qualifier shall be preferably added. +enum class QualifierPolicy { + Left, // Add the qualifier always to the left side, if that is possible. + Right, // Add the qualifier always to the right side. +}; + +/// This enum defines which entity is the target for adding the qualifier. This +/// makes only a difference for pointer-types. Other types behave identical +/// for either value of \c ConstTarget. +enum class QualifierTarget { + Pointee, /// Transforming a pointer attaches to the pointee and not the + /// pointer itself. For references and normal values this option has + /// no effect. `int * p = &i;` -> `const int * p = &i` or `int const + /// * p = &i`. + Value, /// Transforming pointers will consider the pointer itself. + /// `int * p = &i;` -> `int * const = &i` +}; + +/// \brief Creates fix to qualify ``VarDecl`` with the specified \c Qualifier. +/// Requires that `Var` is isolated in written code like in `int foo = 42;`. +Optional<FixItHint> +addQualifierToVarDecl(const VarDecl &Var, const ASTContext &Context, + DeclSpec::TQ Qualifier, + QualifierTarget CT = QualifierTarget::Pointee, + QualifierPolicy CP = QualifierPolicy::Left); +} // namespace fixit +} // namespace utils +} // namespace tidy +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_FIXITHINTUTILS_H