1 //== Checker.h - Abstract interface for checkers -----------------*- C++ -*--=//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines Checker and CheckerVisitor, classes used for creating
11 // domain-specific checks.
13 //===----------------------------------------------------------------------===//
15 #include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
16 using namespace clang;
19 Checker::~Checker() {}
21 CheckerContext::~CheckerContext() {
22 // Do we need to autotransition? 'Dst' can get populated in a variety of
23 // ways, including 'addTransition()' adding the predecessor node to Dst
24 // without actually generated a new node. We also shouldn't autotransition
25 // if we are building sinks or we generated a node and decided to not
26 // add it as a transition.
27 if (Dst.size() == size && !B.BuildSinks && !B.hasGeneratedNode) {
28 if (ST && ST != B.GetState(Pred)) {
29 static int autoTransitionTag = 0;
30 addTransition(ST, &autoTransitionTag);