llvm/clang/unittests/Analysis/FlowSensitive/CFGMatchSwitchTest.cpp

//===- unittests/Analysis/FlowSensitive/CFGMatchSwitchTest.cpp ------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "clang/Analysis/FlowSensitive/CFGMatchSwitch.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Stmt.h"
#include "clang/Analysis/CFG.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/ADT/StringRef.h"
#include "gtest/gtest.h"

usingnamespaceclang;
usingnamespacedataflow;
usingnamespaceast_matchers;

namespace {
// State for tracking the number of matches on each kind of CFGElement by the
// CFGMatchSwitch. Currently only tracks CFGStmt and CFGInitializer.
struct CFGElementMatches {};

// Returns a match switch that counts the number of local variables
// (singly-declared) and fields initialized to the integer literal 42.
auto buildCFGMatchSwitch() {}

// Runs the match switch `MS` on the control flow graph generated from `Code`,
// tracking information in state `S`. For simplicity, this test utility is
// restricted to CFGs with a single control flow block (excluding entry and
// exit blocks) - generated by `Code` with sequential flow (i.e. no branching).
//
// Requirements:
//
//  `Code` must contain a function named `f`, the body of this function will be
//  used to generate the CFG.
template <typename State>
void applySwitchToCode(CFGMatchSwitch<State> &MS, State &S,
                       llvm::StringRef Code) {}

TEST(CFGMatchSwitchTest, NoInitializationTo42) {}

TEST(CFGMatchSwitchTest, SingleLocalVarInitializationTo42) {}

TEST(CFGMatchSwitchTest, SingleFieldInitializationTo42) {}

TEST(CFGMatchSwitchTest, LocalVarAndFieldInitializationTo42) {}
} // namespace