clang: lib/Frontend/TextDiagnosticBuffer.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

16#include "llvm/ADT/SmallString.h"

17#include "llvm/Support/ErrorHandling.h"

18

19using namespace clang;

20

21

22

25

27

30 switch (Level) {

31 default: llvm_unreachable(

32 "Diagnostic not handled during diagnostic buffering!");

34 All.emplace_back(Level, Notes.size());

35 Notes.emplace_back(Info.getLocation(), std::string(Buf));

36 break;

38 All.emplace_back(Level, Warnings.size());

39 Warnings.emplace_back(Info.getLocation(), std::string(Buf));

40 break;

42 All.emplace_back(Level, Remarks.size());

43 Remarks.emplace_back(Info.getLocation(), std::string(Buf));

44 break;

47 All.emplace_back(Level, Errors.size());

48 Errors.emplace_back(Info.getLocation(), std::string(Buf));

49 break;

50 }

51}

52

54 for (const auto &I : All) {

56 switch (I.first) {

57 default: llvm_unreachable(

58 "Diagnostic not handled during diagnostic flushing!");

60 Diag << Notes[I.second].second;

61 break;

63 Diag << Warnings[I.second].second;

64 break;

66 Diag << Remarks[I.second].second;

67 break;

70 Diag << Errors[I.second].second;

71 break;

72 }

73 }

74}

Defines the Diagnostic-related interfaces.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

static DiagnosticBuilder Diag(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, unsigned DiagID)

Produce a diagnostic highlighting some portion of a literal.

virtual void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info)

Handle this diagnostic, reporting it to the user or capturing it to a log as needed.

A little helper class (which is basically a smart pointer that forwards info from DiagnosticsEngine a...

const SourceLocation & getLocation() const

void FormatDiagnostic(SmallVectorImpl< char > &OutStr) const

Format this diagnostic into a string, substituting the formal arguments into the %0 slots.

Concrete class used by the front-end to report problems and issues.

DiagnosticBuilder Report(SourceLocation Loc, unsigned DiagID)

Issue the message to the client.

unsigned getCustomDiagID(Level L, const char(&FormatString)[N])

Return an ID for a diagnostic with the specified format string and level.

Level

The level of the diagnostic, after it has been through mapping.

void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override

HandleDiagnostic - Store the errors, warnings, and notes that are reported.

void FlushDiagnostics(DiagnosticsEngine &Diags) const

FlushDiagnostics - Flush the buffered diagnostics to an given diagnostic engine.

The JSON file list parser is used to communicate input to InstallAPI.