]> granicus.if.org Git - clang/commitdiff
Introduce -Wunused-method option for warning on unused class methods in anonymous...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 17 Aug 2010 21:43:11 +0000 (21:43 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 17 Aug 2010 21:43:11 +0000 (21:43 +0000)
This option is not part of the Unused diagnostic group until the warnings on llvm codebase are fixed
and we are ready to turn it on. Suggestion by Daniel.

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

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/Sema.cpp
test/SemaCXX/warn-unused-filescoped.cpp

index f0ad0ab4371289e66ca27db7c2cf796d25305b23..61928f03c847d250a5081428faf441024d20c99b 100644 (file)
@@ -133,6 +133,7 @@ def UnknownAttributes : DiagGroup<"unknown-attributes">;
 def UnusedArgument : DiagGroup<"unused-argument">;
 def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
 def UnusedFunction : DiagGroup<"unused-function">;
+def UnusedMethod : DiagGroup<"unused-method">;
 def UnusedLabel : DiagGroup<"unused-label">;
 def UnusedParameter : DiagGroup<"unused-parameter">;
 def UnusedValue    : DiagGroup<"unused-value">;
@@ -167,6 +168,7 @@ def Conversion : DiagGroup<"conversion",
 def Unused : DiagGroup<"unused",
                        [UnusedArgument, UnusedFunction, UnusedLabel,
                         // UnusedParameter, (matches GCC's behavior)
+                        // UnusedMethod, (clean-up llvm before enabling)
                         UnusedValue, UnusedVariable]>,
                         DiagCategory<"Unused Entity Issue">;
 
@@ -185,6 +187,7 @@ def Extra : DiagGroup<"extra", [
     InitializerOverrides,
     SemiBeforeMethodBody,
     SignCompare,
+    UnusedMethod,
     UnusedParameter
   ]>;
 
index 91e0525f0197965cabdb5bf270d4fd0a85c36a69..6f525ca16c1d6248efe554d1375eb56a28605b80 100644 (file)
@@ -104,6 +104,8 @@ def warn_decl_in_param_list : Warning<
   "declaration of %0 will not be visible outside of this function">;
 def warn_unused_function : Warning<"unused function %0">,
   InGroup<UnusedFunction>, DefaultIgnore;
+def warn_unused_method : Warning<"unused method %0">,
+  InGroup<UnusedMethod>, DefaultIgnore;
   
 def warn_implicit_function_decl : Warning<
   "implicit declaration of function %0">,
index 0a85252ab1072ce396d62e69903cc6ba55f296b3..92e3fdd72adba01963cfd61cb6c9df022f827345 100644 (file)
@@ -376,7 +376,9 @@ void Sema::ActOnEndOfTranslationUnit() {
       const FunctionDecl *DiagD;
       if (!FD->hasBody(DiagD))
         DiagD = FD;
-      Diag(DiagD->getLocation(), diag::warn_unused_function)
+      Diag(DiagD->getLocation(),
+           isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_method
+                                     : diag::warn_unused_function)
             << DiagD->getDeclName();
     } else {
       const VarDecl *DiagD = cast<VarDecl>(*I)->getDefinition();
index 50d41422d350b8dee5df28d8ed78f422d66aa708..37acecb0f3fd0b65f2f8a0edac956193fe61f6e2 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused %s
+// RUN: %clang_cc1 -fsyntax-only -verify -Wunused -Wunused-method %s
 
 static void f1(); // expected-warning{{unused}}