1//===- PrettyDeclStackTrace.h - Stack trace for decl processing -*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines an llvm::PrettyStackTraceEntry object for showing 11// that a particular declaration was being processed when a crash 12// occurred. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_CLANG_SEMA_PRETTY_DECL_STACK_TRACE_H 17#define LLVM_CLANG_SEMA_PRETTY_DECL_STACK_TRACE_H 18 19#include "clang/Basic/SourceLocation.h" 20#include "llvm/Support/PrettyStackTrace.h" 21 22namespace clang { 23 24class Decl; 25class Sema; 26class SourceManager; 27 28/// PrettyDeclStackTraceEntry - If a crash occurs in the parser while 29/// parsing something related to a declaration, include that 30/// declaration in the stack trace. 31class PrettyDeclStackTraceEntry : public llvm::PrettyStackTraceEntry { 32 Sema &S; 33 Decl *TheDecl; 34 SourceLocation Loc; 35 const char *Message; 36 37public: 38 PrettyDeclStackTraceEntry(Sema &S, Decl *D, SourceLocation Loc, 39 const char *Msg) 40 : S(S), TheDecl(D), Loc(Loc), Message(Msg) {} 41 42 virtual void print(raw_ostream &OS) const; 43}; 44 45} 46 47#endif 48