123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- /*===-- clang-c/CXDiagnostic.h - C Index Diagnostics --------------*- C -*-===*\
- |* *|
- |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
- |* Exceptions. *|
- |* See https://llvm.org/LICENSE.txt for license information. *|
- |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
- |* *|
- |*===----------------------------------------------------------------------===*|
- |* *|
- |* This header provides the interface to C Index diagnostics. *|
- |* *|
- \*===----------------------------------------------------------------------===*/
- #ifndef LLVM_CLANG_C_CXDIAGNOSTIC_H
- #define LLVM_CLANG_C_CXDIAGNOSTIC_H
- #include "clang-c/CXSourceLocation.h"
- #include "clang-c/CXString.h"
- #include "clang-c/ExternC.h"
- #include "clang-c/Platform.h"
- LLVM_CLANG_C_EXTERN_C_BEGIN
- /**
- * \defgroup CINDEX_DIAG Diagnostic reporting
- *
- * @{
- */
- /**
- * Describes the severity of a particular diagnostic.
- */
- enum CXDiagnosticSeverity {
- /**
- * A diagnostic that has been suppressed, e.g., by a command-line
- * option.
- */
- CXDiagnostic_Ignored = 0,
- /**
- * This diagnostic is a note that should be attached to the
- * previous (non-note) diagnostic.
- */
- CXDiagnostic_Note = 1,
- /**
- * This diagnostic indicates suspicious code that may not be
- * wrong.
- */
- CXDiagnostic_Warning = 2,
- /**
- * This diagnostic indicates that the code is ill-formed.
- */
- CXDiagnostic_Error = 3,
- /**
- * This diagnostic indicates that the code is ill-formed such
- * that future parser recovery is unlikely to produce useful
- * results.
- */
- CXDiagnostic_Fatal = 4
- };
- /**
- * A single diagnostic, containing the diagnostic's severity,
- * location, text, source ranges, and fix-it hints.
- */
- typedef void *CXDiagnostic;
- /**
- * A group of CXDiagnostics.
- */
- typedef void *CXDiagnosticSet;
- /**
- * Determine the number of diagnostics in a CXDiagnosticSet.
- */
- CINDEX_LINKAGE unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet Diags);
- /**
- * Retrieve a diagnostic associated with the given CXDiagnosticSet.
- *
- * \param Diags the CXDiagnosticSet to query.
- * \param Index the zero-based diagnostic number to retrieve.
- *
- * \returns the requested diagnostic. This diagnostic must be freed
- * via a call to \c clang_disposeDiagnostic().
- */
- CINDEX_LINKAGE CXDiagnostic clang_getDiagnosticInSet(CXDiagnosticSet Diags,
- unsigned Index);
- /**
- * Describes the kind of error that occurred (if any) in a call to
- * \c clang_loadDiagnostics.
- */
- enum CXLoadDiag_Error {
- /**
- * Indicates that no error occurred.
- */
- CXLoadDiag_None = 0,
- /**
- * Indicates that an unknown error occurred while attempting to
- * deserialize diagnostics.
- */
- CXLoadDiag_Unknown = 1,
- /**
- * Indicates that the file containing the serialized diagnostics
- * could not be opened.
- */
- CXLoadDiag_CannotLoad = 2,
- /**
- * Indicates that the serialized diagnostics file is invalid or
- * corrupt.
- */
- CXLoadDiag_InvalidFile = 3
- };
- /**
- * Deserialize a set of diagnostics from a Clang diagnostics bitcode
- * file.
- *
- * \param file The name of the file to deserialize.
- * \param error A pointer to a enum value recording if there was a problem
- * deserializing the diagnostics.
- * \param errorString A pointer to a CXString for recording the error string
- * if the file was not successfully loaded.
- *
- * \returns A loaded CXDiagnosticSet if successful, and NULL otherwise. These
- * diagnostics should be released using clang_disposeDiagnosticSet().
- */
- CINDEX_LINKAGE CXDiagnosticSet clang_loadDiagnostics(
- const char *file, enum CXLoadDiag_Error *error, CXString *errorString);
- /**
- * Release a CXDiagnosticSet and all of its contained diagnostics.
- */
- CINDEX_LINKAGE void clang_disposeDiagnosticSet(CXDiagnosticSet Diags);
- /**
- * Retrieve the child diagnostics of a CXDiagnostic.
- *
- * This CXDiagnosticSet does not need to be released by
- * clang_disposeDiagnosticSet.
- */
- CINDEX_LINKAGE CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic D);
- /**
- * Destroy a diagnostic.
- */
- CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic Diagnostic);
- /**
- * Options to control the display of diagnostics.
- *
- * The values in this enum are meant to be combined to customize the
- * behavior of \c clang_formatDiagnostic().
- */
- enum CXDiagnosticDisplayOptions {
- /**
- * Display the source-location information where the
- * diagnostic was located.
- *
- * When set, diagnostics will be prefixed by the file, line, and
- * (optionally) column to which the diagnostic refers. For example,
- *
- * \code
- * test.c:28: warning: extra tokens at end of #endif directive
- * \endcode
- *
- * This option corresponds to the clang flag \c -fshow-source-location.
- */
- CXDiagnostic_DisplaySourceLocation = 0x01,
- /**
- * If displaying the source-location information of the
- * diagnostic, also include the column number.
- *
- * This option corresponds to the clang flag \c -fshow-column.
- */
- CXDiagnostic_DisplayColumn = 0x02,
- /**
- * If displaying the source-location information of the
- * diagnostic, also include information about source ranges in a
- * machine-parsable format.
- *
- * This option corresponds to the clang flag
- * \c -fdiagnostics-print-source-range-info.
- */
- CXDiagnostic_DisplaySourceRanges = 0x04,
- /**
- * Display the option name associated with this diagnostic, if any.
- *
- * The option name displayed (e.g., -Wconversion) will be placed in brackets
- * after the diagnostic text. This option corresponds to the clang flag
- * \c -fdiagnostics-show-option.
- */
- CXDiagnostic_DisplayOption = 0x08,
- /**
- * Display the category number associated with this diagnostic, if any.
- *
- * The category number is displayed within brackets after the diagnostic text.
- * This option corresponds to the clang flag
- * \c -fdiagnostics-show-category=id.
- */
- CXDiagnostic_DisplayCategoryId = 0x10,
- /**
- * Display the category name associated with this diagnostic, if any.
- *
- * The category name is displayed within brackets after the diagnostic text.
- * This option corresponds to the clang flag
- * \c -fdiagnostics-show-category=name.
- */
- CXDiagnostic_DisplayCategoryName = 0x20
- };
- /**
- * Format the given diagnostic in a manner that is suitable for display.
- *
- * This routine will format the given diagnostic to a string, rendering
- * the diagnostic according to the various options given. The
- * \c clang_defaultDiagnosticDisplayOptions() function returns the set of
- * options that most closely mimics the behavior of the clang compiler.
- *
- * \param Diagnostic The diagnostic to print.
- *
- * \param Options A set of options that control the diagnostic display,
- * created by combining \c CXDiagnosticDisplayOptions values.
- *
- * \returns A new string containing for formatted diagnostic.
- */
- CINDEX_LINKAGE CXString clang_formatDiagnostic(CXDiagnostic Diagnostic,
- unsigned Options);
- /**
- * Retrieve the set of display options most similar to the
- * default behavior of the clang compiler.
- *
- * \returns A set of display options suitable for use with \c
- * clang_formatDiagnostic().
- */
- CINDEX_LINKAGE unsigned clang_defaultDiagnosticDisplayOptions(void);
- /**
- * Determine the severity of the given diagnostic.
- */
- CINDEX_LINKAGE enum CXDiagnosticSeverity
- clang_getDiagnosticSeverity(CXDiagnostic);
- /**
- * Retrieve the source location of the given diagnostic.
- *
- * This location is where Clang would print the caret ('^') when
- * displaying the diagnostic on the command line.
- */
- CINDEX_LINKAGE CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic);
- /**
- * Retrieve the text of the given diagnostic.
- */
- CINDEX_LINKAGE CXString clang_getDiagnosticSpelling(CXDiagnostic);
- /**
- * Retrieve the name of the command-line option that enabled this
- * diagnostic.
- *
- * \param Diag The diagnostic to be queried.
- *
- * \param Disable If non-NULL, will be set to the option that disables this
- * diagnostic (if any).
- *
- * \returns A string that contains the command-line option used to enable this
- * warning, such as "-Wconversion" or "-pedantic".
- */
- CINDEX_LINKAGE CXString clang_getDiagnosticOption(CXDiagnostic Diag,
- CXString *Disable);
- /**
- * Retrieve the category number for this diagnostic.
- *
- * Diagnostics can be categorized into groups along with other, related
- * diagnostics (e.g., diagnostics under the same warning flag). This routine
- * retrieves the category number for the given diagnostic.
- *
- * \returns The number of the category that contains this diagnostic, or zero
- * if this diagnostic is uncategorized.
- */
- CINDEX_LINKAGE unsigned clang_getDiagnosticCategory(CXDiagnostic);
- /**
- * Retrieve the name of a particular diagnostic category. This
- * is now deprecated. Use clang_getDiagnosticCategoryText()
- * instead.
- *
- * \param Category A diagnostic category number, as returned by
- * \c clang_getDiagnosticCategory().
- *
- * \returns The name of the given diagnostic category.
- */
- CINDEX_DEPRECATED CINDEX_LINKAGE CXString
- clang_getDiagnosticCategoryName(unsigned Category);
- /**
- * Retrieve the diagnostic category text for a given diagnostic.
- *
- * \returns The text of the given diagnostic category.
- */
- CINDEX_LINKAGE CXString clang_getDiagnosticCategoryText(CXDiagnostic);
- /**
- * Determine the number of source ranges associated with the given
- * diagnostic.
- */
- CINDEX_LINKAGE unsigned clang_getDiagnosticNumRanges(CXDiagnostic);
- /**
- * Retrieve a source range associated with the diagnostic.
- *
- * A diagnostic's source ranges highlight important elements in the source
- * code. On the command line, Clang displays source ranges by
- * underlining them with '~' characters.
- *
- * \param Diagnostic the diagnostic whose range is being extracted.
- *
- * \param Range the zero-based index specifying which range to
- *
- * \returns the requested source range.
- */
- CINDEX_LINKAGE CXSourceRange clang_getDiagnosticRange(CXDiagnostic Diagnostic,
- unsigned Range);
- /**
- * Determine the number of fix-it hints associated with the
- * given diagnostic.
- */
- CINDEX_LINKAGE unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diagnostic);
- /**
- * Retrieve the replacement information for a given fix-it.
- *
- * Fix-its are described in terms of a source range whose contents
- * should be replaced by a string. This approach generalizes over
- * three kinds of operations: removal of source code (the range covers
- * the code to be removed and the replacement string is empty),
- * replacement of source code (the range covers the code to be
- * replaced and the replacement string provides the new code), and
- * insertion (both the start and end of the range point at the
- * insertion location, and the replacement string provides the text to
- * insert).
- *
- * \param Diagnostic The diagnostic whose fix-its are being queried.
- *
- * \param FixIt The zero-based index of the fix-it.
- *
- * \param ReplacementRange The source range whose contents will be
- * replaced with the returned replacement string. Note that source
- * ranges are half-open ranges [a, b), so the source code should be
- * replaced from a and up to (but not including) b.
- *
- * \returns A string containing text that should be replace the source
- * code indicated by the \c ReplacementRange.
- */
- CINDEX_LINKAGE CXString clang_getDiagnosticFixIt(
- CXDiagnostic Diagnostic, unsigned FixIt, CXSourceRange *ReplacementRange);
- /**
- * @}
- */
- LLVM_CLANG_C_EXTERN_C_END
- #endif
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|