summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Doffman <mark.doffman@codethink.co.uk>2014-12-04 16:08:50 +0000
committerMark Doffman <mark.doffman@codethink.co.uk>2014-12-04 16:08:50 +0000
commit6052953bdf7c7a9542042212c235ae9d404eef02 (patch)
treeb7bd7aff57baefcc6dc8997c11bf4c52492fb316
parentd8c478c1147996984ade8e9b6d7c7f6d02d13afc (diff)
downloadflang-6052953bdf7c7a9542042212c235ae9d404eef02.tar.gz
Fix some diagnostic code breakage.
Broken in LLVM 3.6 update.
-rw-r--r--include/flang/Basic/Diagnostic.h20
-rw-r--r--lib/Basic/DiagnosticIDs.cpp2
2 files changed, 6 insertions, 16 deletions
diff --git a/include/flang/Basic/Diagnostic.h b/include/flang/Basic/Diagnostic.h
index 4b5ef11937..a16c55bc48 100644
--- a/include/flang/Basic/Diagnostic.h
+++ b/include/flang/Basic/Diagnostic.h
@@ -377,13 +377,7 @@ private:
/// \brief The list of ranges added to this diagnostic.
SourceRange DiagRanges[MaxRanges];
- /// \brief If valid, provides a hint with some code to insert, remove,
- /// or modify at a particular position.
- struct FixIt : FixItHint {
- FixIt() : FixItHint(SourceLocation(),"") {}
- FixIt(const FixItHint &Hint) : FixItHint(Hint) {}
- };
- FixIt DiagFixItHints[MaxFixItHints];
+ SmallVector<FixItHint, 10> DiagFixItHints;
DiagnosticMappingInfo makeMappingInfo(diag::Mapping Map, SourceLocation L) {
bool isPragma = L.isValid();
@@ -596,10 +590,7 @@ public:
}
void AddFixItHint(const FixItHint &Hint) const {
- assert(isActive() && "Clients must not add to cleared diagnostic!");
- assert(NumFixits < DiagnosticsEngine::MaxFixItHints &&
- "Too many arguments to diagnostic!");
- DiagObj->DiagFixItHints[NumFixits++] = Hint;
+ DiagObj->DiagFixItHints.push_back(Hint);
}
bool hasMaxRanges() const {
@@ -768,13 +759,12 @@ public:
return DiagObj->NumDiagFixItHints;
}
- const FixItHint &getFixItHint(unsigned Idx) const {
- assert(Idx < getNumFixItHints() && "Invalid index!");
+ const ArrayRef<FixItHint> getFixItHint(unsigned Idx) const {
return DiagObj->DiagFixItHints[Idx];
}
- const FixItHint *getFixItHints() const {
- return getNumFixItHints()? DiagObj->DiagFixItHints : 0;
+ const ArrayRef<FixItHint> getFixItHints() const {
+ return DiagObj->DiagFixItHints;
}
/// \brief Format this diagnostic into a string, substituting the
diff --git a/lib/Basic/DiagnosticIDs.cpp b/lib/Basic/DiagnosticIDs.cpp
index c89bca2b1d..e3987c4799 100644
--- a/lib/Basic/DiagnosticIDs.cpp
+++ b/lib/Basic/DiagnosticIDs.cpp
@@ -664,7 +664,7 @@ void DiagnosticIDs::EmitDiag(DiagnosticsEngine &Diag, Level DiagLevel) const {
}
Diag.Client->HandleDiagnostic(Lvl, Info.getLocation(), llvm::Twine(OutStr),
llvm::ArrayRef<SourceRange>(Diag.DiagRanges,Diag.NumDiagRanges),
- llvm::ArrayRef<FixItHint>(Diag.DiagFixItHints,Diag.NumDiagFixItHints));
+ Diag.DiagFixItHints);
Diag.CurDiagID = ~0U;
}