[cfe-commits] r137851 - in /cfe/trunk: lib/Basic/DiagnosticIDs.cpp test/Misc/error-limit-multiple-notes.cpp test/Misc/error-limit.c
Douglas Gregor
dgregor at apple.com
Wed Aug 17 12:13:00 PDT 2011
Author: dgregor
Date: Wed Aug 17 14:13:00 2011
New Revision: 137851
URL: http://llvm.org/viewvc/llvm-project?rev=137851&view=rev
Log:
Fix -ferror-limit= to properly emit notes following the last error
messages. Fi from David Blaikie, tests from Nikola Smiljanic!
Added:
cfe/trunk/test/Misc/error-limit-multiple-notes.cpp (with props)
cfe/trunk/test/Misc/error-limit.c (with props)
Modified:
cfe/trunk/lib/Basic/DiagnosticIDs.cpp
Modified: cfe/trunk/lib/Basic/DiagnosticIDs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/DiagnosticIDs.cpp?rev=137851&r1=137850&r2=137851&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/DiagnosticIDs.cpp (original)
+++ cfe/trunk/lib/Basic/DiagnosticIDs.cpp Wed Aug 17 14:13:00 2011
@@ -733,11 +733,13 @@
++Diag.NumErrors;
}
- // If we've emitted a lot of errors, emit a fatal error after it to stop a
- // flood of bogus errors.
- if (Diag.ErrorLimit && Diag.NumErrors >= Diag.ErrorLimit &&
- DiagLevel == DiagnosticIDs::Error)
+ // If we've emitted a lot of errors, emit a fatal error instead of it to
+ // stop a flood of bogus errors.
+ if (Diag.ErrorLimit && Diag.NumErrors > Diag.ErrorLimit &&
+ DiagLevel == DiagnosticIDs::Error) {
Diag.SetDelayedDiagnostic(diag::fatal_too_many_errors);
+ return false;
+ }
}
// If we have any Fix-Its, make sure that all of the Fix-Its point into
Added: cfe/trunk/test/Misc/error-limit-multiple-notes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/error-limit-multiple-notes.cpp?rev=137851&view=auto
==============================================================================
--- cfe/trunk/test/Misc/error-limit-multiple-notes.cpp (added)
+++ cfe/trunk/test/Misc/error-limit-multiple-notes.cpp Wed Aug 17 14:13:00 2011
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -ferror-limit 1 -fsyntax-only %s 2>&1 | FileCheck %s
+
+// error and three notes emitted
+void foo(int);
+void foo(double);
+void foo(int, int);
+
+int main()
+{
+ foo();
+}
+
+// error and note suppressed by error-limit
+struct s1{};
+struct s1{};
+
+// CHECK: 10:5: error: no matching function for call to 'foo'
+// CHECK: 6:6: note: candidate function not viable: requires 2 arguments, but 0 were provided
+// CHECK: 5:6: note: candidate function not viable: requires 1 argument, but 0 were provided
+// CHECK: 4:6: note: candidate function not viable: requires 1 argument, but 0 were provided
+// CHECK: fatal error: too many errors emitted, stopping now
+// CHECK-NOT: 15:8: error: redefinition of 's1'
+// CHECK-NOT: 14:8: note: previous definition is here
Propchange: cfe/trunk/test/Misc/error-limit-multiple-notes.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cfe/trunk/test/Misc/error-limit-multiple-notes.cpp
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: cfe/trunk/test/Misc/error-limit-multiple-notes.cpp
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: cfe/trunk/test/Misc/error-limit.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/error-limit.c?rev=137851&view=auto
==============================================================================
--- cfe/trunk/test/Misc/error-limit.c (added)
+++ cfe/trunk/test/Misc/error-limit.c Wed Aug 17 14:13:00 2011
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -ferror-limit 1 -fsyntax-only %s 2>&1 | FileCheck %s
+
+// error and note emitted
+struct s1{};
+struct s1{};
+
+// error and note suppressed by error-limit
+struct s2{};
+struct s2{};
+
+// CHECK: 5:8: error: redefinition of 's1'
+// CHECK: 4:8: note: previous definition is here
+// CHECK: fatal error: too many errors emitted, stopping now
+// CHECK-NOT: 9:8: error: redefinition of 's2'
+// CHECK-NOT: 8:8: note: previous definition is here
Propchange: cfe/trunk/test/Misc/error-limit.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cfe/trunk/test/Misc/error-limit.c
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: cfe/trunk/test/Misc/error-limit.c
------------------------------------------------------------------------------
svn:mime-type = text/plain
More information about the cfe-commits
mailing list