1 //===--- ASTDiagnostic.h - Diagnostics for the AST library ------*- 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 #ifndef LLVM_CLANG_AST_ASTDIAGNOSTIC_H 10 #define LLVM_CLANG_AST_ASTDIAGNOSTIC_H 11 12 #include "clang/AST/Type.h" 13 #include "clang/Basic/Diagnostic.h" 14 #include "clang/Basic/DiagnosticAST.h" 15 16 namespace clang { 17 /// DiagnosticsEngine argument formatting function for diagnostics that 18 /// involve AST nodes. 19 /// 20 /// This function formats diagnostic arguments for various AST nodes, 21 /// including types, declaration names, nested name specifiers, and 22 /// declaration contexts, into strings that can be printed as part of 23 /// diagnostics. It is meant to be used as the argument to 24 /// \c DiagnosticsEngine::SetArgToStringFn(), where the cookie is an \c 25 /// ASTContext pointer. 26 void FormatASTNodeDiagnosticArgument( 27 DiagnosticsEngine::ArgumentKind Kind, 28 intptr_t Val, 29 StringRef Modifier, 30 StringRef Argument, 31 ArrayRef<DiagnosticsEngine::ArgumentValue> PrevArgs, 32 SmallVectorImpl<char> &Output, 33 void *Cookie, 34 ArrayRef<intptr_t> QualTypeVals); 35 36 /// Returns a desugared version of the QualType, and marks ShouldAKA as true 37 /// whenever we remove significant sugar from the type. 38 QualType desugarForDiagnostic(ASTContext &Context, QualType QT, 39 bool &ShouldAKA); 40 } // end namespace clang 41 42 #endif 43