summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorYitzhak Mandelbaum <yitzhakm@google.com>2019-10-16 01:06:46 +0000
committerYitzhak Mandelbaum <yitzhakm@google.com>2019-10-16 01:06:46 +0000
commita5f406013645696985998bdaf1d4d85c95a280dd (patch)
tree8813073d88f7d063adf1fdbdcf0e073e7ed664c3 /include
parented4dbd72ed336ea1b7ae8a2165bc0f7b3eccb31c (diff)
downloadclang-a5f406013645696985998bdaf1d4d85c95a280dd.tar.gz
[libTooling] Put all Transformer declarations in a single namespace.
Summary: This revision introduces a new namespace, `clang::transformer`, to hold the declarations for the Transformer library. Reviewers: gribozavr Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68876 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@374962 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/clang/Tooling/Transformer/MatchConsumer.h8
-rw-r--r--include/clang/Tooling/Transformer/RangeSelector.h20
-rw-r--r--include/clang/Tooling/Transformer/RewriteRule.h21
-rw-r--r--include/clang/Tooling/Transformer/Stencil.h34
-rw-r--r--include/clang/Tooling/Transformer/Transformer.h4
5 files changed, 71 insertions, 16 deletions
diff --git a/include/clang/Tooling/Transformer/MatchConsumer.h b/include/clang/Tooling/Transformer/MatchConsumer.h
index 51eb6af25a..0a1dbe13ea 100644
--- a/include/clang/Tooling/Transformer/MatchConsumer.h
+++ b/include/clang/Tooling/Transformer/MatchConsumer.h
@@ -22,8 +22,7 @@
#include "llvm/Support/Error.h"
namespace clang {
-namespace tooling {
-
+namespace transformer {
/// A failable computation over nodes bound by AST matchers.
///
/// The computation should report any errors though its return value (rather
@@ -52,7 +51,12 @@ MatchConsumer<T> ifBound(std::string ID, MatchConsumer<T> TrueC,
return (Map.find(ID) != Map.end() ? TrueC : FalseC)(Result);
};
}
+} // namespace transformer
+namespace tooling {
+// DEPRECATED: Temporary alias supporting client migration to the `transformer`
+// namespace.
+using transformer::ifBound;
} // namespace tooling
} // namespace clang
#endif // LLVM_CLANG_TOOLING_TRANSFORMER_MATCH_CONSUMER_H_
diff --git a/include/clang/Tooling/Transformer/RangeSelector.h b/include/clang/Tooling/Transformer/RangeSelector.h
index e178fb36a8..00f1f84d0f 100644
--- a/include/clang/Tooling/Transformer/RangeSelector.h
+++ b/include/clang/Tooling/Transformer/RangeSelector.h
@@ -23,7 +23,7 @@
#include <string>
namespace clang {
-namespace tooling {
+namespace transformer {
using RangeSelector = MatchConsumer<CharSourceRange>;
inline RangeSelector charRange(CharSourceRange R) {
@@ -87,6 +87,24 @@ RangeSelector elseBranch(std::string ID);
/// source), if `S` is an expansion, and `S` itself, otherwise. Corresponds to
/// `SourceManager::getExpansionRange`.
RangeSelector expansion(RangeSelector S);
+} // namespace transformer
+
+namespace tooling {
+// DEPRECATED: These are temporary aliases supporting client migration to the
+// `transformer` namespace.
+using transformer::after;
+using transformer::before;
+using transformer::callArgs;
+using transformer::charRange;
+using transformer::elseBranch;
+using transformer::expansion;
+using transformer::initListElements;
+using transformer::member;
+using transformer::name;
+using transformer::node;
+using transformer::range;
+using transformer::statement;
+using transformer::statements;
} // namespace tooling
} // namespace clang
diff --git a/include/clang/Tooling/Transformer/RewriteRule.h b/include/clang/Tooling/Transformer/RewriteRule.h
index 902a9d5bfa..058ef3f23d 100644
--- a/include/clang/Tooling/Transformer/RewriteRule.h
+++ b/include/clang/Tooling/Transformer/RewriteRule.h
@@ -29,9 +29,8 @@
#include <utility>
namespace clang {
-namespace tooling {
+namespace transformer {
using TextGenerator = MatchConsumer<std::string>;
-
/// Wraps a string as a TextGenerator.
inline TextGenerator text(std::string M) {
return [M](const ast_matchers::MatchFinder::MatchResult &)
@@ -282,6 +281,24 @@ Expected<SmallVector<Transformation, 1>>
translateEdits(const ast_matchers::MatchFinder::MatchResult &Result,
llvm::ArrayRef<ASTEdit> Edits);
} // namespace detail
+} // namespace transformer
+
+namespace tooling {
+// DEPRECATED: These are temporary aliases supporting client migration to the
+// `transformer` namespace.
+using transformer::addInclude;
+using transformer::applyFirst;
+using transformer::change;
+using transformer::insertAfter;
+using transformer::insertBefore;
+using transformer::makeRule;
+using transformer::remove;
+using transformer::text;
+using transformer::RewriteRule;
+using transformer::IncludeFormat;
+namespace detail {
+using namespace transformer::detail;
+} // namespace detail
} // namespace tooling
} // namespace clang
diff --git a/include/clang/Tooling/Transformer/Stencil.h b/include/clang/Tooling/Transformer/Stencil.h
index eeb5902444..feb3ac8853 100644
--- a/include/clang/Tooling/Transformer/Stencil.h
+++ b/include/clang/Tooling/Transformer/Stencil.h
@@ -31,8 +31,7 @@
#include <vector>
namespace clang {
-namespace tooling {
-
+namespace transformer {
/// A stencil is represented as a sequence of "parts" that can each individually
/// generate a code string based on a match result. The different kinds of
/// parts include (raw) text, references to bound nodes and assorted operations
@@ -133,8 +132,10 @@ private:
std::vector<StencilPart> Parts;
};
+//
// Functions for conveniently building stencils.
-namespace stencil {
+//
+
/// Convenience wrapper for Stencil::cat that can be imported with a using decl.
template <typename... Ts> Stencil cat(Ts &&... Parts) {
return Stencil::cat(std::forward<Ts>(Parts)...);
@@ -146,12 +147,6 @@ StencilPart text(llvm::StringRef Text);
/// \returns the source corresponding to the selected range.
StencilPart selection(RangeSelector Selector);
-/// \returns the source corresponding to the identified node.
-/// FIXME: Deprecated. Write `selection(node(Id))` instead.
-inline StencilPart node(llvm::StringRef Id) {
- return selection(tooling::node(Id));
-}
-
/// Generates the source of the expression bound to \p Id, wrapping it in
/// parentheses if it may parse differently depending on context. For example, a
/// binary operation is always wrapped, while a variable reference is never
@@ -197,6 +192,27 @@ StencilPart run(MatchConsumer<std::string> C);
///
/// \returns the string resulting from calling the node's print() method.
StencilPart dPrint(llvm::StringRef Id);
+} // namespace transformer
+
+namespace tooling {
+namespace stencil {
+// DEPRECATED: These are temporary aliases supporting client migration to the
+// `transformer` namespace.
+using transformer::access;
+using transformer::addressOf;
+using transformer::cat;
+using transformer::deref;
+using transformer::dPrint;
+using transformer::expression;
+using transformer::ifBound;
+using transformer::run;
+using transformer::selection;
+using transformer::text;
+/// \returns the source corresponding to the identified node.
+/// FIXME: Deprecated. Write `selection(node(Id))` instead.
+inline transformer::StencilPart node(llvm::StringRef Id) {
+ return selection(tooling::node(Id));
+}
} // namespace stencil
} // namespace tooling
} // namespace clang
diff --git a/include/clang/Tooling/Transformer/Transformer.h b/include/clang/Tooling/Transformer/Transformer.h
index d714d446d5..31feacba5e 100644
--- a/include/clang/Tooling/Transformer/Transformer.h
+++ b/include/clang/Tooling/Transformer/Transformer.h
@@ -30,7 +30,7 @@ public:
/// because of macros, but doesn't fail. Note that clients are responsible
/// for handling the case that independent \c AtomicChanges conflict with each
/// other.
- Transformer(RewriteRule Rule, ChangeConsumer Consumer)
+ Transformer(transformer::RewriteRule Rule, ChangeConsumer Consumer)
: Rule(std::move(Rule)), Consumer(std::move(Consumer)) {}
/// N.B. Passes `this` pointer to `MatchFinder`. So, this object should not
@@ -42,7 +42,7 @@ public:
void run(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
- RewriteRule Rule;
+ transformer::RewriteRule Rule;
/// Receives each successful rewrites as an \c AtomicChange.
ChangeConsumer Consumer;
};