]> granicus.if.org Git - clang/commitdiff
Warn about more than the first unused variable when -Werror is set.
authorMatt Beaumont-Gay <matthewbg@google.com>
Thu, 28 Mar 2013 21:46:45 +0000 (21:46 +0000)
committerMatt Beaumont-Gay <matthewbg@google.com>
Thu, 28 Mar 2013 21:46:45 +0000 (21:46 +0000)
To do this, thread DiagnosticErrorTrap's hasUnrecoverableErrorOccurred through
to Scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178294 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Sema/Scope.h
lib/Sema/SemaDecl.cpp
test/Sema/warn-unused-variables-werror.c [new file with mode: 0644]

index 4957d85e00e668a89b8518a34cb903f4f9d22c2c..d016b9b887c5428beddddd5dd0043f6752a4ee74 100644 (file)
@@ -240,7 +240,11 @@ public:
   void setEntity(void *E) { Entity = E; }
 
   bool hasErrorOccurred() const { return ErrorTrap.hasErrorOccurred(); }
-                           
+
+  bool hasUnrecoverableErrorOccurred() const {
+    return ErrorTrap.hasUnrecoverableErrorOccurred();
+  }
+
   /// isClassScope - Return true if this scope is a class/struct/union scope.
   bool isClassScope() const {
     return (getFlags() & Scope::ClassScope);
index dfa87d314d045e35d4bf69147736eccac4df1a75..ab4a17a30d5a0f64442bef7d6fd0668e998ab598 100644 (file)
@@ -1389,7 +1389,7 @@ void Sema::ActOnPopScope(SourceLocation Loc, Scope *S) {
     if (!D->getDeclName()) continue;
 
     // Diagnose unused variables in this scope.
-    if (!S->hasErrorOccurred())
+    if (!S->hasUnrecoverableErrorOccurred())
       DiagnoseUnusedDecl(D);
     
     // If this was a forward reference to a label, verify it was defined.
diff --git a/test/Sema/warn-unused-variables-werror.c b/test/Sema/warn-unused-variables-werror.c
new file mode 100644 (file)
index 0000000..ceaff1b
--- /dev/null
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Werror -verify %s
+
+void f() {
+  int i;  // expected-error{{unused}}
+  int j;  // expected-error{{unused}}
+}