MLIR 22.0.0git
mlir::Diagnostic Class Reference

This class contains all of the information necessary to report a diagnostic to the DiagnosticEngine. More...

#include "mlir/IR/Diagnostics.h"

Public Types

using note_iterator = llvm::pointee_iterator<NoteVector::iterator>
using const_note_iterator

Public Member Functions

 Diagnostic (Location loc, DiagnosticSeverity severity)
 Diagnostic (Diagnostic &&)=default
Diagnosticoperator= (Diagnostic &&)=default
DiagnosticSeverity getSeverity () const
 Returns the severity of this diagnostic.
Location getLocation () const
 Returns the source location for this diagnostic.
MutableArrayRef< DiagnosticArgumentgetArguments ()
 Returns the current list of diagnostic arguments.
ArrayRef< DiagnosticArgumentgetArguments () const
template<typename Arg>
std::enable_if_t<!std::is_convertible< Arg, StringRef >::value &&std::is_constructible< DiagnosticArgument, Arg >::value, Diagnostic & > operator<< (Arg &&val)
 Stream operator for inserting new diagnostic arguments.
Diagnosticoperator<< (StringAttr val)
template<size_t n>
Diagnosticoperator<< (const char(&val)[n])
 Stream in a string literal.
Diagnosticoperator<< (char val)
 Stream in a Twine argument.
Diagnosticoperator<< (const Twine &val)
Diagnosticoperator<< (Twine &&val)
Diagnosticoperator<< (OperationName val)
 Stream in an OperationName.
Diagnosticoperator<< (Operation &op)
 Stream in an Operation.
Diagnosticoperator<< (OpWithFlags op)
Diagnosticoperator<< (Operation *op)
DiagnosticappendOp (Operation &op, const OpPrintingFlags &flags)
 Append an operation with the given printing flags.
Diagnosticoperator<< (Value val)
 Stream in a Value.
template<typename T, typename ValueT = llvm::detail::ValueOfRange<T>>
std::enable_if_t<!std::is_constructible< DiagnosticArgument, T >::value, Diagnostic & > operator<< (T &&range)
 Stream in a range.
template<typename T>
DiagnosticappendRange (const T &c, const char *delim=", ")
 Append a range to the diagnostic.
template<typename Arg1, typename Arg2, typename... Args>
Diagnosticappend (Arg1 &&arg1, Arg2 &&arg2, Args &&...args)
 Append arguments to the diagnostic.
template<typename Arg>
Diagnosticappend (Arg &&arg)
 Append one argument to the diagnostic.
void print (raw_ostream &os) const
 Outputs this diagnostic to a stream.
std::string str () const
 Converts the diagnostic to a string.
DiagnosticattachNote (std::optional< Location > noteLoc=std::nullopt)
 Attaches a note to this diagnostic.
iterator_range< note_iteratorgetNotes ()
 Returns the notes held by this diagnostic.
iterator_range< const_note_iteratorgetNotes () const
 operator LogicalResult () const
 Allow a diagnostic to be converted to 'failure'.
 operator ParseResult () const
 Allow a diagnostic to be converted to 'failure'.
template<typename T>
 operator FailureOr< T > () const
 Allow a diagnostic to be converted to FailureOr<T>.
SmallVectorImpl< DiagnosticArgument > & getMetadata ()
 Returns the current list of diagnostic metadata.

Detailed Description

This class contains all of the information necessary to report a diagnostic to the DiagnosticEngine.

It should generally not be constructed directly, and instead used transitively via InFlightDiagnostic.

Definition at line 156 of file Diagnostics.h.

Member Typedef Documentation

◆ const_note_iterator

Initial value:
llvm::pointee_iterator<NoteVector::const_iterator>

Definition at line 253 of file Diagnostics.h.

◆ note_iterator

using mlir::Diagnostic::note_iterator = llvm::pointee_iterator<NoteVector::iterator>

Definition at line 252 of file Diagnostics.h.

Constructor & Destructor Documentation

◆ Diagnostic() [1/2]

◆ Diagnostic() [2/2]

mlir::Diagnostic::Diagnostic ( Diagnostic && )
default

References Diagnostic().

Member Function Documentation

◆ append() [1/2]

template<typename Arg>
Diagnostic & mlir::Diagnostic::append ( Arg && arg)
inline

Append one argument to the diagnostic.

Definition at line 236 of file Diagnostics.h.

References Diagnostic().

◆ append() [2/2]

template<typename Arg1, typename Arg2, typename... Args>
Diagnostic & mlir::Diagnostic::append ( Arg1 && arg1,
Arg2 && arg2,
Args &&... args )
inline

Append arguments to the diagnostic.

Definition at line 230 of file Diagnostics.h.

References append(), and Diagnostic().

Referenced by append(), and mlir::detail::verifySymbolTable().

◆ appendOp()

Diagnostic & Diagnostic::appendOp ( Operation & op,
const OpPrintingFlags & flags )

Append an operation with the given printing flags.

Definition at line 145 of file Diagnostics.cpp.

References adjustPrintingFlags(), Diagnostic(), mlir::Operation::print(), and str().

Referenced by operator<<(), and operator<<().

◆ appendRange()

template<typename T>
Diagnostic & mlir::Diagnostic::appendRange ( const T & c,
const char * delim = ", " )
inline

Append a range to the diagnostic.

The default delimiter between elements is ','.

Definition at line 222 of file Diagnostics.h.

References Diagnostic().

◆ attachNote()

Diagnostic & Diagnostic::attachNote ( std::optional< Location > noteLoc = std::nullopt)

Attaches a note to this diagnostic.

A new location may be optionally provided, if not, then the location defaults to the one specified for this diagnostic. Notes may not be attached to other notes.

Append and return a new note.

Definition at line 181 of file Diagnostics.cpp.

References Diagnostic(), and mlir::Note.

Referenced by mlir::DiagnosedDefiniteFailure::attachNote().

◆ getArguments() [1/2]

MutableArrayRef< DiagnosticArgument > mlir::Diagnostic::getArguments ( )
inline

Returns the current list of diagnostic arguments.

Definition at line 172 of file Diagnostics.h.

Referenced by print().

◆ getArguments() [2/2]

ArrayRef< DiagnosticArgument > mlir::Diagnostic::getArguments ( ) const
inline

Definition at line 173 of file Diagnostics.h.

◆ getLocation()

Location mlir::Diagnostic::getLocation ( ) const
inline

Returns the source location for this diagnostic.

Definition at line 169 of file Diagnostics.h.

◆ getMetadata()

SmallVectorImpl< DiagnosticArgument > & mlir::Diagnostic::getMetadata ( )
inline

Returns the current list of diagnostic metadata.

Definition at line 278 of file Diagnostics.h.

◆ getNotes() [1/2]

iterator_range< note_iterator > mlir::Diagnostic::getNotes ( )
inline

Returns the notes held by this diagnostic.

Definition at line 257 of file Diagnostics.h.

◆ getNotes() [2/2]

iterator_range< const_note_iterator > mlir::Diagnostic::getNotes ( ) const
inline

Definition at line 260 of file Diagnostics.h.

◆ getSeverity()

DiagnosticSeverity mlir::Diagnostic::getSeverity ( ) const
inline

Returns the severity of this diagnostic.

Definition at line 166 of file Diagnostics.h.

◆ operator FailureOr< T >()

template<typename T>
mlir::Diagnostic::operator FailureOr< T > ( ) const
inline

Allow a diagnostic to be converted to FailureOr<T>.

Always results in 'failure' because this cast cannot possibly return an object of 'T'.

Definition at line 273 of file Diagnostics.h.

◆ operator LogicalResult()

Diagnostic::operator LogicalResult ( ) const

Allow a diagnostic to be converted to 'failure'.

Definition at line 197 of file Diagnostics.cpp.

◆ operator ParseResult()

mlir::Diagnostic::operator ParseResult ( ) const
inline

Allow a diagnostic to be converted to 'failure'.

Definition at line 268 of file Diagnostics.h.

◆ operator<<() [1/12]

template<typename Arg>
std::enable_if_t<!std::is_convertible< Arg, StringRef >::value &&std::is_constructible< DiagnosticArgument, Arg >::value, Diagnostic & > mlir::Diagnostic::operator<< ( Arg && val)
inline

Stream operator for inserting new diagnostic arguments.

Definition at line 173 of file Diagnostics.h.

◆ operator<<() [2/12]

Diagnostic & Diagnostic::operator<< ( char val)

Stream in a Twine argument.

Definition at line 102 of file Diagnostics.cpp.

References Diagnostic().

◆ operator<<() [3/12]

template<size_t n>
Diagnostic & mlir::Diagnostic::operator<< ( const char(&) val[n])
inline

Stream in a string literal.

Definition at line 188 of file Diagnostics.h.

References Diagnostic().

◆ operator<<() [4/12]

Diagnostic & Diagnostic::operator<< ( const Twine & val)

Definition at line 103 of file Diagnostics.cpp.

References Diagnostic(), and twineToStrRef().

◆ operator<<() [5/12]

Diagnostic & Diagnostic::operator<< ( Operation & op)

Stream in an Operation.

Definition at line 137 of file Diagnostics.cpp.

References appendOp(), and Diagnostic().

◆ operator<<() [6/12]

Diagnostic & mlir::Diagnostic::operator<< ( Operation * op)
inline

Definition at line 204 of file Diagnostics.h.

References Diagnostic().

◆ operator<<() [7/12]

Diagnostic & Diagnostic::operator<< ( OperationName val)

Stream in an OperationName.

Definition at line 118 of file Diagnostics.cpp.

References Diagnostic(), and mlir::OperationName::getStringRef().

◆ operator<<() [8/12]

Diagnostic & Diagnostic::operator<< ( OpWithFlags op)

◆ operator<<() [9/12]

Diagnostic & Diagnostic::operator<< ( StringAttr val)

Definition at line 112 of file Diagnostics.cpp.

References Diagnostic().

◆ operator<<() [10/12]

template<typename T, typename ValueT = llvm::detail::ValueOfRange<T>>
std::enable_if_t<!std::is_constructible< DiagnosticArgument, T >::value, Diagnostic & > mlir::Diagnostic::operator<< ( T && range)
inline

Stream in a range.

Definition at line 209 of file Diagnostics.h.

References Diagnostic().

◆ operator<<() [11/12]

Diagnostic & Diagnostic::operator<< ( Twine && val)

Definition at line 107 of file Diagnostics.cpp.

References Diagnostic(), and twineToStrRef().

◆ operator<<() [12/12]

Diagnostic & Diagnostic::operator<< ( Value val)

Stream in a Value.

Definition at line 157 of file Diagnostics.cpp.

References adjustPrintingFlags(), Diagnostic(), mlir::Value::print(), and str().

◆ operator=()

Diagnostic & mlir::Diagnostic::operator= ( Diagnostic && )
default

References Diagnostic().

◆ print()

void Diagnostic::print ( raw_ostream & os) const

Outputs this diagnostic to a stream.

Definition at line 165 of file Diagnostics.cpp.

References getArguments().

Referenced by mlirAffineExprPrint(), mlirAffineMapPrint(), mlirDiagnosticPrint(), mlirIntegerSetPrint(), and str().

◆ str()

std::string Diagnostic::str ( ) const

Converts the diagnostic to a string.

Convert the diagnostic to a string.

Definition at line 171 of file Diagnostics.cpp.

References print(), and str().

Referenced by appendOp(), operator<<(), and str().


The documentation for this class was generated from the following files: