Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  46.