9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_EXPRSEQUENCE_H
10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_EXPRSEQUENCE_H
12#include "clang/Analysis/CFG.h"
13#include "clang/Lex/Lexer.h"
14#include "llvm/ADT/DenseMap.h"
15#include "llvm/ADT/SmallPtrSet.h"
16#include "llvm/ADT/SmallVector.h"
18#include "../ClangTidy.h"
70 ExprSequence(
const CFG *TheCFG,
const Stmt *Root, ASTContext *TheContext);
73 bool inSequence(
const Stmt *Before,
const Stmt *After)
const;
89 const Stmt *getSequenceSuccessor(
const Stmt *S)
const;
91 const Stmt *resolveSyntheticStmt(
const Stmt *S)
const;
96 llvm::DenseMap<const Stmt *, const Stmt *> SyntheticStmtSourceMap;
115 llvm::DenseMap<const Stmt *, const CFGBlock *> Map;
Provides information about the evaluation order of (sub-)expressions within a CFGBlock.
bool potentiallyAfter(const Stmt *After, const Stmt *Before) const
Returns whether After can potentially be evaluated after Before.
bool inSequence(const Stmt *Before, const Stmt *After) const
Returns whether Before is sequenced before After.
Maps Stmts to the CFGBlock that contains them.
const CFGBlock * blockContainingStmt(const Stmt *S) const
Returns the block that S is contained in.