Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//= ObjCNoReturn.h - Handling of Cocoa APIs known not to return --*- C++ -*---//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements special handling of recognizing ObjC API hooks that
10
// do not return but aren't marked as such in API headers.
11
//
12
//===----------------------------------------------------------------------===//
13
 
14
#ifndef LLVM_CLANG_ANALYSIS_DOMAINSPECIFIC_OBJCNORETURN_H
15
#define LLVM_CLANG_ANALYSIS_DOMAINSPECIFIC_OBJCNORETURN_H
16
 
17
#include "clang/Basic/IdentifierTable.h"
18
 
19
namespace clang {
20
 
21
class ASTContext;
22
class ObjCMessageExpr;
23
 
24
class ObjCNoReturn {
25
  /// Cached "raise" selector.
26
  Selector RaiseSel;
27
 
28
  /// Cached identifier for "NSException".
29
  IdentifierInfo *NSExceptionII;
30
 
31
  enum { NUM_RAISE_SELECTORS = 2 };
32
 
33
  /// Cached set of selectors in NSException that are 'noreturn'.
34
  Selector NSExceptionInstanceRaiseSelectors[NUM_RAISE_SELECTORS];
35
 
36
public:
37
  ObjCNoReturn(ASTContext &C);
38
 
39
  /// Return true if the given message expression is known to never
40
  /// return.
41
  bool isImplicitNoReturn(const ObjCMessageExpr *ME);
42
};
43
}
44
 
45
#endif