2016-03-06 05:17:58 +08:00
|
|
|
//===--- FixItHintUtils.h - clang-tidy---------------------------*- C++ -*-===//
|
|
|
|
//
|
2019-01-19 16:50:56 +08:00
|
|
|
// 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
|
2016-03-06 05:17:58 +08:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#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"
|
[clang-tidy] implement utility-function to add 'const' to variables
Summary:
This patch extends the already existing facility to add 'const' to variables
to be more flexible and correct. The previous version did not consider pointers
as value AND pointee. For future automatic introduction for const-correctness
this shortcoming needs to be fixed.
It always allows configuration where the 'const' token is inserted, either on
the left side (if possible) or the right side.
It adds many unit-tests to the utility-function that did not exist before, as
the function was implicitly tested through clang-tidy checks. These
tests were not changed, as the API is still compatible.
Reviewers: aaron.ballman, hokein, alexfh, shuaiwang, lebedev.ri
Reviewed By: aaron.ballman
Subscribers: jdoerfert, mgorny, xazax.hun, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D54395
2020-01-04 03:36:49 +08:00
|
|
|
#include "clang/Sema/DeclSpec.h"
|
2016-03-06 05:17:58 +08:00
|
|
|
|
|
|
|
namespace clang {
|
|
|
|
namespace tidy {
|
|
|
|
namespace utils {
|
2016-05-03 10:54:05 +08:00
|
|
|
namespace fixit {
|
2016-03-06 05:17:58 +08:00
|
|
|
|
Remove \brief commands from doxygen comments.
Summary:
We've been running doxygen with the autobrief option for a couple of
years now. This makes the \brief markers into our comments
redundant. Since they are a visual distraction and we don't want to
encourage more \brief markers in new code either, this patch removes
them all.
Patch produced by
for i in $(git grep -l '\\brief'); do perl -pi -e 's/\\brief //g' $i & done
[This is analogous to LLVM r331272 and CFE r331834]
Subscribers: srhines, nemanjai, javed.absar, kbarton, MaskRay, jkorous, arphaman, jfb, kadircet, jsji, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66578
llvm-svn: 369643
2019-08-22 19:32:57 +08:00
|
|
|
/// Creates fix to make ``VarDecl`` a reference by adding ``&``.
|
2016-03-06 05:17:58 +08:00
|
|
|
FixItHint changeVarDeclToReference(const VarDecl &Var, ASTContext &Context);
|
|
|
|
|
Remove \brief commands from doxygen comments.
Summary:
We've been running doxygen with the autobrief option for a couple of
years now. This makes the \brief markers into our comments
redundant. Since they are a visual distraction and we don't want to
encourage more \brief markers in new code either, this patch removes
them all.
Patch produced by
for i in $(git grep -l '\\brief'); do perl -pi -e 's/\\brief //g' $i & done
[This is analogous to LLVM r331272 and CFE r331834]
Subscribers: srhines, nemanjai, javed.absar, kbarton, MaskRay, jkorous, arphaman, jfb, kadircet, jsji, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66578
llvm-svn: 369643
2019-08-22 19:32:57 +08:00
|
|
|
/// Creates fix to make ``VarDecl`` const qualified.
|
2016-03-06 05:17:58 +08:00
|
|
|
FixItHint changeVarDeclToConst(const VarDecl &Var);
|
|
|
|
|
[clang-tidy] implement utility-function to add 'const' to variables
Summary:
This patch extends the already existing facility to add 'const' to variables
to be more flexible and correct. The previous version did not consider pointers
as value AND pointee. For future automatic introduction for const-correctness
this shortcoming needs to be fixed.
It always allows configuration where the 'const' token is inserted, either on
the left side (if possible) or the right side.
It adds many unit-tests to the utility-function that did not exist before, as
the function was implicitly tested through clang-tidy checks. These
tests were not changed, as the API is still compatible.
Reviewers: aaron.ballman, hokein, alexfh, shuaiwang, lebedev.ri
Reviewed By: aaron.ballman
Subscribers: jdoerfert, mgorny, xazax.hun, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D54395
2020-01-04 03:36:49 +08:00
|
|
|
/// 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);
|
2016-05-03 10:54:05 +08:00
|
|
|
} // namespace fixit
|
|
|
|
} // namespace utils
|
2016-03-06 05:17:58 +08:00
|
|
|
} // namespace tidy
|
|
|
|
} // namespace clang
|
|
|
|
|
|
|
|
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_FIXITHINTUTILS_H
|