summaryrefslogtreecommitdiffstats
path: root/include/clang/Frontend/DiagnosticRenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Frontend/DiagnosticRenderer.h')
-rw-r--r--include/clang/Frontend/DiagnosticRenderer.h178
1 files changed, 0 insertions, 178 deletions
diff --git a/include/clang/Frontend/DiagnosticRenderer.h b/include/clang/Frontend/DiagnosticRenderer.h
deleted file mode 100644
index c372fdd..0000000
--- a/include/clang/Frontend/DiagnosticRenderer.h
+++ /dev/null
@@ -1,178 +0,0 @@
-//===--- DiagnosticRenderer.h - Diagnostic Pretty-Printing ------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This is a utility class that provides support for pretty-printing of
-// diagnostics. It is used to implement the different code paths which require
-// such functionality in a consistent way.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_FRONTEND_DIAGNOSTICRENDERER_H
-#define LLVM_CLANG_FRONTEND_DIAGNOSTICRENDERER_H
-
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/LLVM.h"
-#include "clang/Basic/SourceLocation.h"
-#include "llvm/ADT/Optional.h"
-#include "llvm/ADT/PointerUnion.h"
-
-namespace clang {
-
-class DiagnosticOptions;
-class LangOptions;
-class SourceManager;
-
-typedef llvm::PointerUnion<const Diagnostic *,
- const StoredDiagnostic *> DiagOrStoredDiag;
-
-/// \brief Class to encapsulate the logic for formatting a diagnostic message.
-///
-/// Actual "printing" logic is implemented by subclasses.
-///
-/// This class provides an interface for building and emitting
-/// diagnostic, including all of the macro backtraces, caret diagnostics, FixIt
-/// Hints, and code snippets. In the presence of macros this involves
-/// a recursive process, synthesizing notes for each macro expansion.
-///
-/// A brief worklist:
-/// FIXME: Sink the recursive printing of template instantiations into this
-/// class.
-class DiagnosticRenderer {
-protected:
- const LangOptions &LangOpts;
- IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
-
- /// \brief The location of the previous diagnostic if known.
- ///
- /// This will be invalid in cases where there is no (known) previous
- /// diagnostic location, or that location itself is invalid or comes from
- /// a different source manager than SM.
- SourceLocation LastLoc;
-
- /// \brief The location of the last include whose stack was printed if known.
- ///
- /// Same restriction as LastLoc essentially, but tracking include stack
- /// root locations rather than diagnostic locations.
- SourceLocation LastIncludeLoc;
-
- /// \brief The level of the last diagnostic emitted.
- ///
- /// The level of the last diagnostic emitted. Used to detect level changes
- /// which change the amount of information displayed.
- DiagnosticsEngine::Level LastLevel;
-
- DiagnosticRenderer(const LangOptions &LangOpts,
- DiagnosticOptions *DiagOpts);
-
- virtual ~DiagnosticRenderer();
-
- virtual void emitDiagnosticMessage(SourceLocation Loc, PresumedLoc PLoc,
- DiagnosticsEngine::Level Level,
- StringRef Message,
- ArrayRef<CharSourceRange> Ranges,
- const SourceManager *SM,
- DiagOrStoredDiag Info) = 0;
-
- virtual void emitDiagnosticLoc(SourceLocation Loc, PresumedLoc PLoc,
- DiagnosticsEngine::Level Level,
- ArrayRef<CharSourceRange> Ranges,
- const SourceManager &SM) = 0;
-
- virtual void emitCodeContext(SourceLocation Loc,
- DiagnosticsEngine::Level Level,
- SmallVectorImpl<CharSourceRange>& Ranges,
- ArrayRef<FixItHint> Hints,
- const SourceManager &SM) = 0;
-
- virtual void emitIncludeLocation(SourceLocation Loc, PresumedLoc PLoc,
- const SourceManager &SM) = 0;
- virtual void emitImportLocation(SourceLocation Loc, PresumedLoc PLoc,
- StringRef ModuleName,
- const SourceManager &SM) = 0;
- virtual void emitBuildingModuleLocation(SourceLocation Loc, PresumedLoc PLoc,
- StringRef ModuleName,
- const SourceManager &SM) = 0;
-
- virtual void beginDiagnostic(DiagOrStoredDiag D,
- DiagnosticsEngine::Level Level) {}
- virtual void endDiagnostic(DiagOrStoredDiag D,
- DiagnosticsEngine::Level Level) {}
-
-
-private:
- void emitBasicNote(StringRef Message);
- void emitIncludeStack(SourceLocation Loc, PresumedLoc PLoc,
- DiagnosticsEngine::Level Level, const SourceManager &SM);
- void emitIncludeStackRecursively(SourceLocation Loc, const SourceManager &SM);
- void emitImportStack(SourceLocation Loc, const SourceManager &SM);
- void emitImportStackRecursively(SourceLocation Loc, StringRef ModuleName,
- const SourceManager &SM);
- void emitModuleBuildStack(const SourceManager &SM);
- void emitCaret(SourceLocation Loc, DiagnosticsEngine::Level Level,
- ArrayRef<CharSourceRange> Ranges, ArrayRef<FixItHint> Hints,
- const SourceManager &SM);
- void emitSingleMacroExpansion(SourceLocation Loc,
- DiagnosticsEngine::Level Level,
- ArrayRef<CharSourceRange> Ranges,
- const SourceManager &SM);
- void emitMacroExpansions(SourceLocation Loc,
- DiagnosticsEngine::Level Level,
- ArrayRef<CharSourceRange> Ranges,
- ArrayRef<FixItHint> Hints,
- const SourceManager &SM);
-public:
- /// \brief Emit a diagnostic.
- ///
- /// This is the primary entry point for emitting diagnostic messages.
- /// It handles formatting and rendering the message as well as any ancillary
- /// information needed based on macros whose expansions impact the
- /// diagnostic.
- ///
- /// \param Loc The location for this caret.
- /// \param Level The level of the diagnostic to be emitted.
- /// \param Message The diagnostic message to emit.
- /// \param Ranges The underlined ranges for this code snippet.
- /// \param FixItHints The FixIt hints active for this diagnostic.
- /// \param SM The SourceManager; will be null if the diagnostic came from the
- /// frontend, thus \p Loc will be invalid.
- void emitDiagnostic(SourceLocation Loc, DiagnosticsEngine::Level Level,
- StringRef Message, ArrayRef<CharSourceRange> Ranges,
- ArrayRef<FixItHint> FixItHints,
- const SourceManager *SM,
- DiagOrStoredDiag D = (Diagnostic *)nullptr);
-
- void emitStoredDiagnostic(StoredDiagnostic &Diag);
-};
-
-/// Subclass of DiagnosticRender that turns all subdiagostics into explicit
-/// notes. It is up to subclasses to further define the behavior.
-class DiagnosticNoteRenderer : public DiagnosticRenderer {
-public:
- DiagnosticNoteRenderer(const LangOptions &LangOpts,
- DiagnosticOptions *DiagOpts)
- : DiagnosticRenderer(LangOpts, DiagOpts) {}
-
- ~DiagnosticNoteRenderer() override;
-
- void emitIncludeLocation(SourceLocation Loc, PresumedLoc PLoc,
- const SourceManager &SM) override;
-
- void emitImportLocation(SourceLocation Loc, PresumedLoc PLoc,
- StringRef ModuleName,
- const SourceManager &SM) override;
-
- void emitBuildingModuleLocation(SourceLocation Loc, PresumedLoc PLoc,
- StringRef ModuleName,
- const SourceManager &SM) override;
-
- virtual void emitNote(SourceLocation Loc, StringRef Message,
- const SourceManager *SM) = 0;
-};
-} // end clang namespace
-#endif
OpenPOWER on IntegriCloud