From 68b8fad7d25755d8edc41eab6dfa734c18162bed Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Wed, 9 Nov 2011 03:05:27 +0000 Subject: [PATCH] Workaround for compilers that don't implement C++ DR45, from Tom Honermann! llvm-svn: 144161 --- clang/include/clang/Basic/PartialDiagnostic.h | 13 +++++++++++-- clang/include/clang/Parse/Parser.h | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Basic/PartialDiagnostic.h b/clang/include/clang/Basic/PartialDiagnostic.h index ffebc2f99f58..604912314857 100644 --- a/clang/include/clang/Basic/PartialDiagnostic.h +++ b/clang/include/clang/Basic/PartialDiagnostic.h @@ -25,6 +25,15 @@ namespace clang { class PartialDiagnostic { public: + enum { + // The MaxArguments and MaxFixItHints member enum values from + // DiagnosticsEngine are private but DiagnosticsEngine declares + // PartialDiagnostic a friend. These enum values are redeclared + // here so that the nested Storage class below can access them. + MaxArguments = DiagnosticsEngine::MaxArguments, + MaxFixItHints = DiagnosticsEngine::MaxFixItHints + }; + struct Storage { Storage() : NumDiagArgs(0), NumDiagRanges(0), NumFixItHints(0) { } @@ -33,7 +42,7 @@ public: /// currently only support up to 10 arguments (%0-%9). /// A single diagnostic with more than that almost certainly has to /// be simplified anyway. - MaxArguments = DiagnosticsEngine::MaxArguments + MaxArguments = PartialDiagnostic::MaxArguments }; /// NumDiagArgs - This contains the number of entries in Arguments. @@ -65,7 +74,7 @@ public: /// only support 10 ranges, could easily be extended if needed. CharSourceRange DiagRanges[10]; - enum { MaxFixItHints = DiagnosticsEngine::MaxFixItHints }; + enum { MaxFixItHints = PartialDiagnostic::MaxFixItHints }; /// FixItHints - If valid, provides a hint with some code /// to insert, remove, or modify at a particular position. diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index 1b369d0ed38c..ff7a9b2d3455 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -414,11 +414,14 @@ private: return PP.LookAhead(0); } + class BalancedDelimiterTracker; + /// \brief Tracks information about the current nesting depth of /// opening delimiters of each kind. class DelimiterTracker { private: friend class Parser; + friend class BalancedDelimiterTracker; unsigned Paren, Brace, Square, Less, LLLess; unsigned& get(tok::TokenKind t) {