diff options
author | Matt Beaumont-Gay <matthewbg@google.com> | 2013-03-28 21:46:45 +0000 |
---|---|---|
committer | Matt Beaumont-Gay <matthewbg@google.com> | 2013-03-28 21:46:45 +0000 |
commit | 59d8ccb45eeb33d255fd39933e75b45770a7a009 (patch) | |
tree | 6df5f3d42ec1fcb5189cb5b1d41c4f4b4bafa116 | |
parent | edd2cb381e9c7a45354677c7fb6a93ae2a0080b7 (diff) |
Warn about more than the first unused variable when -Werror is set.
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
-rw-r--r-- | include/clang/Sema/Scope.h | 6 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 2 | ||||
-rw-r--r-- | test/Sema/warn-unused-variables-werror.c | 6 |
3 files changed, 12 insertions, 2 deletions
diff --git a/include/clang/Sema/Scope.h b/include/clang/Sema/Scope.h index 4957d85e00..d016b9b887 100644 --- a/include/clang/Sema/Scope.h +++ b/include/clang/Sema/Scope.h @@ -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); diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index dfa87d314d..ab4a17a30d 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -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 index 0000000000..ceaff1ba69 --- /dev/null +++ b/test/Sema/warn-unused-variables-werror.c @@ -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}} +} |