summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-query/Query.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-query/Query.h')
-rw-r--r--clang-tools-extra/clang-query/Query.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-query/Query.h b/clang-tools-extra/clang-query/Query.h
index e8f4ff34bed..1f5a25db736 100644
--- a/clang-tools-extra/clang-query/Query.h
+++ b/clang-tools-extra/clang-query/Query.h
@@ -10,6 +10,7 @@
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_QUERY_QUERY_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_QUERY_QUERY_H
+#include "QuerySession.h"
#include "clang/ASTMatchers/Dynamic/VariantValue.h"
#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/ADT/Optional.h"
@@ -133,6 +134,23 @@ template <typename T> struct SetQuery : Query {
T Value;
};
+// Implements the exclusive 'set output dump|diag|print' options.
+struct SetExclusiveOutputQuery : Query {
+ SetExclusiveOutputQuery(bool QuerySession::*Var)
+ : Query(QK_SetOutputKind), Var(Var) {}
+ bool run(llvm::raw_ostream &OS, QuerySession &QS) const override {
+ QS.DiagOutput = false;
+ QS.DetailedASTOutput = false;
+ QS.PrintOutput = false;
+ QS.*Var = true;
+ return true;
+ }
+
+ static bool classof(const Query *Q) { return Q->Kind == QK_SetOutputKind; }
+
+ bool QuerySession::*Var;
+};
+
} // namespace query
} // namespace clang
OpenPOWER on IntegriCloud