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,\
193347b497157d36cf280d1d9f52956faa6e702f34Richard Smith             SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) 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
27d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie  /// \brief DiagnosticsEngine 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
34d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie  /// \c DiagnosticsEngine::SetArgToStringFn(), where the cookie is an \c
35d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie  /// ASTContext pointer.
360673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth  void FormatASTNodeDiagnosticArgument(
37d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie      DiagnosticsEngine::ArgumentKind Kind,
380673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      intptr_t Val,
39ef8225444452a1486bd721f3285301fe84643b00Stephen Hines      StringRef Modifier,
40ef8225444452a1486bd721f3285301fe84643b00Stephen Hines      StringRef Argument,
41ef8225444452a1486bd721f3285301fe84643b00Stephen Hines      ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs,
42686775deca8b8685eb90801495880e3abdd844c2Chris Lattner      SmallVectorImpl<char> &Output,
430673cb30340aadaede7b795c763b00f6b64e611cChandler Carruth      void *Cookie,
44341785ec52f87c0803ba52dc88faac4e136f8593Bill Wendling      ArrayRef<intptr_t> QualTypeVals);
45132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner}  // end namespace clang
46132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner
47132b5beaf31da1213bb95b4631ae390f5e1052c1Chris Lattner#endif
48