diff options
Diffstat (limited to 'include/clang/Frontend/VerifyDiagnosticConsumer.h')
-rw-r--r-- | include/clang/Frontend/VerifyDiagnosticConsumer.h | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/include/clang/Frontend/VerifyDiagnosticConsumer.h b/include/clang/Frontend/VerifyDiagnosticConsumer.h index 8d71fb98b0bb1..9d985bc4955f8 100644 --- a/include/clang/Frontend/VerifyDiagnosticConsumer.h +++ b/include/clang/Frontend/VerifyDiagnosticConsumer.h @@ -11,18 +11,24 @@ #define LLVM_CLANG_FRONTEND_VERIFYDIAGNOSTICCONSUMER_H #include "clang/Basic/Diagnostic.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SourceLocation.h" #include "clang/Lex/Preprocessor.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/PointerIntPair.h" -#include "llvm/ADT/STLExtras.h" -#include <climits> +#include "llvm/ADT/StringRef.h" +#include <cassert> +#include <limits> #include <memory> +#include <string> +#include <vector> namespace clang { -class DiagnosticsEngine; -class TextDiagnosticBuffer; class FileEntry; +class LangOptions; +class SourceManager; +class TextDiagnosticBuffer; /// VerifyDiagnosticConsumer - Create a diagnostic client which will use /// markers in the input source to check that all the emitted diagnostics match @@ -153,7 +159,7 @@ public: public: /// Constant representing n or more matches. - static const unsigned MaxCount = UINT_MAX; + static const unsigned MaxCount = std::numeric_limits<unsigned>::max(); SourceLocation DirectiveLoc; SourceLocation DiagnosticLoc; @@ -161,7 +167,9 @@ public: unsigned Min, Max; bool MatchAnyLine; - virtual ~Directive() { } + Directive(const Directive &) = delete; + Directive &operator=(const Directive &) = delete; + virtual ~Directive() = default; // Returns true if directive text is valid. // Otherwise returns false and populates E. @@ -173,22 +181,17 @@ public: protected: Directive(SourceLocation DirectiveLoc, SourceLocation DiagnosticLoc, bool MatchAnyLine, StringRef Text, unsigned Min, unsigned Max) - : DirectiveLoc(DirectiveLoc), DiagnosticLoc(DiagnosticLoc), - Text(Text), Min(Min), Max(Max), MatchAnyLine(MatchAnyLine) { - assert(!DirectiveLoc.isInvalid() && "DirectiveLoc is invalid!"); - assert((!DiagnosticLoc.isInvalid() || MatchAnyLine) && - "DiagnosticLoc is invalid!"); + : DirectiveLoc(DirectiveLoc), DiagnosticLoc(DiagnosticLoc), + Text(Text), Min(Min), Max(Max), MatchAnyLine(MatchAnyLine) { + assert(!DirectiveLoc.isInvalid() && "DirectiveLoc is invalid!"); + assert((!DiagnosticLoc.isInvalid() || MatchAnyLine) && + "DiagnosticLoc is invalid!"); } - - private: - Directive(const Directive &) = delete; - void operator=(const Directive &) = delete; }; - typedef std::vector<std::unique_ptr<Directive>> DirectiveList; + using DirectiveList = std::vector<std::unique_ptr<Directive>>; /// ExpectedData - owns directive objects and deletes on destructor. - /// struct ExpectedData { DirectiveList Errors; DirectiveList Warnings; @@ -215,14 +218,15 @@ private: DiagnosticConsumer *PrimaryClient; std::unique_ptr<DiagnosticConsumer> PrimaryClientOwner; std::unique_ptr<TextDiagnosticBuffer> Buffer; - const Preprocessor *CurrentPreprocessor; - const LangOptions *LangOpts; - SourceManager *SrcManager; - unsigned ActiveSourceFiles; + const Preprocessor *CurrentPreprocessor = nullptr; + const LangOptions *LangOpts = nullptr; + SourceManager *SrcManager = nullptr; + unsigned ActiveSourceFiles = 0; DirectiveStatus Status; ExpectedData ED; void CheckDiagnostics(); + void setSourceManager(SourceManager &SM) { assert((!SrcManager || SrcManager == &SM) && "SourceManager changed!"); SrcManager = &SM; @@ -231,14 +235,18 @@ private: // These facilities are used for validation in debug builds. class UnparsedFileStatus { llvm::PointerIntPair<const FileEntry *, 1, bool> Data; + public: UnparsedFileStatus(const FileEntry *File, bool FoundDirectives) - : Data(File, FoundDirectives) {} + : Data(File, FoundDirectives) {} + const FileEntry *getFile() const { return Data.getPointer(); } bool foundDirectives() const { return Data.getInt(); } }; - typedef llvm::DenseMap<FileID, const FileEntry *> ParsedFilesMap; - typedef llvm::DenseMap<FileID, UnparsedFileStatus> UnparsedFilesMap; + + using ParsedFilesMap = llvm::DenseMap<FileID, const FileEntry *>; + using UnparsedFilesMap = llvm::DenseMap<FileID, UnparsedFileStatus>; + ParsedFilesMap ParsedFiles; UnparsedFilesMap UnparsedFiles; @@ -265,7 +273,7 @@ public: IsUnparsedNoDirectives }; - /// \brief Update lists of parsed and unparsed files. + /// Update lists of parsed and unparsed files. void UpdateParsedFileStatus(SourceManager &SM, FileID FID, ParsedStatus PS); bool HandleComment(Preprocessor &PP, SourceRange Comment) override; @@ -274,6 +282,6 @@ public: const Diagnostic &Info) override; }; -} // end namspace clang +} // namespace clang -#endif +#endif // LLVM_CLANG_FRONTEND_VERIFYDIAGNOSTICCONSUMER_H |