Workaround for compilers that don't implement C++ DR45, from Tom Honermann!

llvm-svn: 144161
This commit is contained in:
Douglas Gregor 2011-11-09 03:05:27 +00:00
parent dbb9ea51fa
commit 68b8fad7d2
2 changed files with 14 additions and 2 deletions

View File

@ -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.

View File

@ -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) {