diff options
Diffstat (limited to 'clang-tools-extra/clang-query/Query.h')
-rw-r--r-- | clang-tools-extra/clang-query/Query.h | 18 |
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 |