1 // RUN: %clang_cc1 -fblocks -fsyntax-only -Wunused-but-set-parameter -verify %s
2 
f0(int x,int y,int z)3 int f0(int x,
4        int y, // expected-warning{{parameter 'y' set but not used}}
5        int z __attribute__((unused))) {
6   y = 0;
7   return x;
8 }
9 
f1(void)10 void f1(void) {
11   (void)^(int x,
12           int y, // expected-warning{{parameter 'y' set but not used}}
13           int z __attribute__((unused))) {
14     y = 0;
15     return x;
16   };
17 }
18 
19 struct S {
20   int i;
21 };
22 
23 // In C++, don't warn for a struct (following gcc).
f3(struct S s)24 void f3(struct S s) {
25   struct S t;
26   s = t;
27 }
28 
29 // Also don't warn for a reference.
f4(int & x)30 void f4(int &x) {
31   x = 0;
32 }
33 
34 // Make sure this doesn't warn.
35 struct A {
36   int i;
AA37   A(int j) : i(j) {}
38 };
39