diff --git a/clang/include/clang/Analysis/FlowSensitive/Diagnosis.h b/clang/include/clang/Analysis/FlowSensitive/Diagnosis.h --- a/clang/include/clang/Analysis/FlowSensitive/Diagnosis.h +++ b/clang/include/clang/Analysis/FlowSensitive/Diagnosis.h @@ -18,14 +18,22 @@ #include "clang/Analysis/FlowSensitive/DataflowEnvironment.h" #include "clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h" #include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/Optional.h" +#include +#include +#include namespace clang { namespace dataflow { +/// Looks at a single statement using the `Lattice` and `Environment` at that +/// program point from running a dataflow analysis, and returns any diagnostics. template using Diagnosis = std::function; +/// Collects diagnostics from all blocks in a CFG, given some dataflow analysis +/// results and a `Diagnose` function which can be run on individual statements. template llvm::DenseSet diagnoseCFG( const ControlFlowContext &CFCtx,