[PATCH] [PATCH] Disabling warnings on unused parameters if function is deleted/ defaulted (cxx11) [PR19303]

Dinesh Dwivedi dinesh.d at samsung.com
Sat Apr 26 11:19:02 PDT 2014


Updated as per comment.

Thanks for review

http://reviews.llvm.org/D3376

Files:
  lib/Sema/SemaDecl.cpp
  test/SemaCXX/cxx11-unused.cpp

Index: lib/Sema/SemaDecl.cpp
===================================================================
--- lib/Sema/SemaDecl.cpp
+++ lib/Sema/SemaDecl.cpp
@@ -9919,7 +9919,9 @@
       Diag(FD->getLocation(), diag::warn_pure_function_definition);
 
     if (!FD->isInvalidDecl()) {
-      DiagnoseUnusedParameters(FD->param_begin(), FD->param_end());
+      // Don't diagnose unused parameters of defaulted or deleted functions.
+      if (Body)
+        DiagnoseUnusedParameters(FD->param_begin(), FD->param_end());
       DiagnoseSizeOfParametersAndReturnValue(FD->param_begin(), FD->param_end(),
                                              FD->getReturnType(), FD);
 
Index: test/SemaCXX/cxx11-unused.cpp
===================================================================
--- /dev/null
+++ test/SemaCXX/cxx11-unused.cpp
@@ -0,0 +1,33 @@
+// RUN: %clang_cc1 -std=c++11 -verify %s -Wunused-parameter
+
+// PR19303 : Make sure we don't get a unused expression warning for deleted and
+// defaulted functions
+
+// expected-no-diagnostics
+
+class A {
+public:
+  int x;
+  A() = default;
+  ~A() = default;
+  A(const A &other) = delete;
+
+  template <typename T>
+  void SetX(T x) {
+    this->x = x;
+  };
+
+  void SetX1(int x);
+};
+
+template <>
+void A::SetX(A x) = delete;
+
+class B {
+public:
+  B() = default;
+  ~B() = default;
+  B(const B &other);
+};
+
+B::B(const B &other) = default;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3376.8864.patch
Type: text/x-patch
Size: 1397 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140426/687882bc/attachment.bin>


More information about the cfe-commits mailing list