#include "TestingSupport.h"
#include "clang/AST/ASTContext.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Analysis/FlowSensitive/NoopAnalysis.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Testing/ADT/StringMapEntry.h"
#include "llvm/Testing/Support/Error.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
usingnamespaceclang;
usingnamespacedataflow;
namespace {
functionDecl;
hasAnyName;
hasName;
isDefinition;
AnalysisInputs;
AnalysisOutputs;
checkDataflow;
IsStringMapEntry;
_;
IsEmpty;
UnorderedElementsAre;
template <typename T>
const FunctionDecl *findTargetFunc(ASTContext &Context, T FunctionMatcher) { … }
void runTest(
llvm::StringRef Code, llvm::StringRef TargetName,
std::function<void(const llvm::DenseMap<const Stmt *, std::string> &)>
RunChecks) { … }
TEST(BuildStatementToAnnotationMappingTest, ReturnStmt) { … }
void checkDataflow(
llvm::StringRef Code,
ast_matchers::internal::Matcher<FunctionDecl> TargetFuncMatcher,
std::function<
void(const llvm::StringMap<DataflowAnalysisState<NoopLattice>> &,
const AnalysisOutputs &)>
Expectations) { … }
TEST(ProgramPointAnnotations, NoAnnotations) { … }
TEST(ProgramPointAnnotations, NoAnnotationsDifferentTarget) { … }
TEST(ProgramPointAnnotations, WithProgramPoint) { … }
TEST(ProgramPointAnnotations, MultipleProgramPoints) { … }
TEST(ProgramPointAnnotations, MultipleFunctionsMultipleProgramPoints) { … }
}