ASTDiagnostic.h revision 686775deca8b8685eb90801495880e3abdd844c2
179a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor//===--- ASTDiagnostic.h - Diagnostics for the AST library ------*- C++ -*-===//
247354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner//
347354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner//                     The LLVM Compiler Infrastructure
447354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner//
547354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner// This file is distributed under the University of Illinois Open Source
647354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner// License. See LICENSE.TXT for details.
747354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner//
847354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner//===----------------------------------------------------------------------===//
947354ed151fe0543e138ccebd3dfe7acfcb291d1Chris Lattner
10132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner#ifndef LLVM_CLANG_DIAGNOSTICAST_H
11132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner#define LLVM_CLANG_DIAGNOSTICAST_H
12132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner
13500d3297d2a21edeac4d46cbcbe21bc2352c2a28Chris Lattner#include "clang/Basic/Diagnostic.h"
14132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner
15132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattnernamespace clang {
161eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  namespace diag {
17132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner    enum {
187d2b8c1fcc2b707be78b09930a7767477822462fDouglas Gregor#define DIAG(ENUM,FLAGS,DEFAULT_MAPPING,DESC,GROUP,\
197d2b8c1fcc2b707be78b09930a7767477822462fDouglas Gregor             SFINAE,ACCESS,CATEGORY,BRIEF,FULL) ENUM,
20132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner#define ASTSTART
214d7a089144f336b11e5e8ce437b3b27bce2b310dSebastian Redl#include "clang/Basic/DiagnosticASTKinds.inc"
2219e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner#undef DIAG
23132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner      NUM_BUILTIN_AST_DIAGNOSTICS
24132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner    };
25132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner  }  // end namespace diag
2679a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor
2779a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// \brief Diagnostic argument formatting function for diagnostics that
2879a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// involve AST nodes.
2979a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  ///
3079a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// This function formats diagnostic arguments for various AST nodes,
3179a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// including types, declaration names, nested name specifiers, and
3279a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// declaration contexts, into strings that can be printed as part of
3379a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// diagnostics. It is meant to be used as the argument to
3479a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// \c Diagnostic::SetArgToStringFn(), where the cookie is an \c ASTContext
3579a9a3417929e340e84dcbc06ed9c3a277cad959Douglas Gregor  /// pointer.
360673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth  void FormatASTNodeDiagnosticArgument(
370673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      Diagnostic::ArgumentKind Kind,
380673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      intptr_t Val,
390673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      const char *Modifier,
400673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      unsigned ModLen,
410673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      const char *Argument,
420673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      unsigned ArgLen,
430673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      const Diagnostic::ArgumentValue *PrevArgs,
440673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      unsigned NumPrevArgs,
45686775deca8b8685eb90801495880e3abdd844c2Chris Lattner      SmallVectorImpl<char> &Output,
460673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      void *Cookie,
47686775deca8b8685eb90801495880e3abdd844c2Chris Lattner      SmallVectorImpl<intptr_t> &QualTypeVals);
48132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner}  // end namespace clang
49132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner
50132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner#endif
51