"expression is not a constant, but is accepted as one by GNU extensions">,
InGroup<GNU>;
def warn_unused_expr : Warning<"expression result unused">,
- InGroup<UnusedValue>, DefaultIgnore;
+ InGroup<UnusedValue>;
def warn_unused_voidptr : Warning<
"expression result unused; should this cast be to 'void'?">,
- InGroup<UnusedValue>, DefaultIgnore;
+ InGroup<UnusedValue>;
def warn_unused_property_expr : Warning<
"property access result unused - getters should not be used for side effects">,
- InGroup<UnusedValue>, DefaultIgnore;
+ InGroup<UnusedValue>;
def warn_unused_call : Warning<
"ignoring return value of function declared with %0 attribute">,
- InGroup<UnusedValue>, DefaultIgnore;
+ InGroup<UnusedValue>;
def err_incomplete_type_used_in_type_trait_expr : Error<
"incomplete type %0 used in type trait expression">;
case 7:
(void)(0 && x);
(void)y7;
- (void)(0 || (y8, ({ return; }), 1));
+ (void)(0 || (y8, ({ return; }), 1)); // expected-warning {{expression result unused}}
(void)x;
break;
case 8:
- (void)(1 && (y9, ({ return; }), 1));
+ (void)(1 && (y9, ({ return; }), 1)); // expected-warning {{expression result unused}}
(void)x;
break;
case 9:
// It should not crash.
void test_block_cast() {
id test_block_cast_aux();
- (void (^)(void *))test_block_cast_aux();
+ (void (^)(void *))test_block_cast_aux(); // expected-warning{{expression result unused}}
}
int OSAtomicCompareAndSwap32Barrier();
// when not explicitly used in an "lvalue" context (as far as the analyzer is
// concerned). This previously triggered a crash due to an invalid assertion.
void pr_4988(void) {
- pr_4988;
+ pr_4988; // expected-warning{{expression result unused}}
}
// <rdar://problem/7152418> - A 'signed char' is used as a flag, which is
-// RUN: %clang_cc1 -fsyntax-only -Wunused-value %s > %t 2>&1
+// RUN: %clang_cc1 -fsyntax-only %s > %t 2>&1
#define M1(x) x
-// RUN: %clang_cc1 -Wunused-value -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -verify %s
void test1() {
@"s"; // expected-warning {{expression result unused}}
id a, b, c;
[a ii]; // expected-warning{{not found}}
[a if: 1 :2]; // expected-warning{{not found}}
- [a inout: 1 :2 another:(2,3,4)]; // expected-warning{{not found}}
- [a inout: 1 :2 another:(2,3,4), 6,6,8]; // expected-warning{{not found}}
- [a inout: 1 :2 another:(2,3,4), (6,4,5),6,8]; // expected-warning{{not found}}
- [a inout: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}}
- [a long: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}}
- [a : "Hello\n" :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}}
+ [a inout: 1 :2 another:(2,3,4)]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
+ [a inout: 1 :2 another:(2,3,4), 6,6,8]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
+ [a inout: 1 :2 another:(2,3,4), (6,4,5),6,8]; // expected-warning{{not found}} \
+ // expected-warning 4{{expression result unused}}
+ [a inout: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
+ [a long: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
+ [a : "Hello\n" :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
// Comma expression as receiver (rdar://6222856)
- [a, b, c foo]; // expected-warning{{not found}}
+ [a, b, c foo]; // expected-warning{{not found}} \
+ // expected-warning 2{{expression result unused}}
}
return proc();
}
@catch (Frob* ex) {
- @throw 1,2; // expected-error {{@throw requires an Objective-C object type ('int' invalid)}}
+ @throw 1,2; // expected-error {{@throw requires an Objective-C object type ('int' invalid)}} \
+ // expected-warning {{expression result unused}}
}
@catch (float x) { // expected-error {{@catch parameter is not a pointer to an interface type}}
}
@catch(...) {
- @throw (4,3,proc());
+ @throw (4,3,proc()); // expected-warning {{expression result unused}} \
+ // expected-warning {{expression result unused}}
}
}
void bar()
{
@try {}// expected-error {{@try statement without a @catch and @finally clause}}
- @"s";
+ @"s"; // expected-warning {{result unused}}
}
void baz()
// If we ever actually *support* __pragma(warning(disable: x)),
// this warning should go away.
- MACRO_WITH__PRAGMA
+ MACRO_WITH__PRAGMA // expected-warning {{expression result unused}}
}
;
(_Bool)ve2; // expected-error {{arithmetic or pointer type is required}}
- for (; ;ve2)
+ for (; ;ve2) // expected-warning {{expression result unused}}
;
(void)ve2;
- ve2;
+ ve2; // expected-warning {{expression result unused}}
}
// PR2416
vec2.z; // expected-error {{vector component access exceeds type 'float2'}}
vec2.xyzw; // expected-error {{vector component access exceeds type 'float2'}}
- vec4.xyzw;
+ vec4.xyzw; // expected-warning {{expression result unused}}
vec4.xyzc; // expected-error {{illegal vector component name 'c'}}
vec4.s01z; // expected-error {{illegal vector component name 'z'}}
vec2 = vec4.s01; // legal, shorten
char z[__builtin_constant_p(4) ? 1 : -1];
// Comma tests
-int comma1[0?1,2:3];
-int comma2[1||(1,2)]; // expected-warning {{use of logical || with constant operand}}
-int comma3[(1,2)]; // expected-warning {{size of static array must be an integer constant expression}}
+int comma1[0?1,2:3]; // expected-warning {{expression result unused}}
+int comma2[1||(1,2)]; // expected-warning {{expression result unused}} \
+ // expected-warning {{use of logical || with constant operand}}
+int comma3[(1,2)]; // expected-warning {{size of static array must be an integer constant expression}} \
+ // expected-warning {{expression result unused}}
// Pointer + __builtin_constant_p
char pbcp[__builtin_constant_p(4) ? (intptr_t)&expr : 0]; // expected-error {{variable length array declaration not allowed at file scope}}
-// RUN: %clang_cc1 %s -fsyntax-only -Wunused-value -verify
+// RUN: %clang_cc1 %s -fsyntax-only -verify
typedef unsigned __uint32_t;
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code -Wunused-value
+// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code
int foo(int X, int Y);
int main () {
B(10); // expected-error {{functional-style cast from 'int' to 'B' is not allowed}}
(B)10; // expected-error {{C-style cast from 'int' to 'B' is not allowed}}
- static_cast<B>(10); // expected-error {{static_cast from 'int' to 'B' is not allowed}}
+ static_cast<B>(10); // expected-error {{static_cast from 'int' to 'B' is not allowed}} \\
+ // expected-warning {{expression result unused}}
}
template<class T>
__typeof(int)(a,5)<<a; // expected-error {{excess elements in scalar initializer}}
void(a), ++a;
if (int(a)+1) {}
- for (int(a)+1;;) {}
+ for (int(a)+1;;) {} // expected-warning {{expression result unused}}
a = sizeof(int()+1);
a = sizeof(int(1));
typeof(int()+1) a2; // expected-error {{extension used}}
- (int(1));
+ (int(1)); // expected-warning {{expression result unused}}
// type-id
(int())1; // expected-error {{C-style cast from 'int' to 'int ()' is not allowed}}
void test_comma(X x, Y y) {
bool& b1 = (x, y);
- X& xr = (x, x);
+ X& xr = (x, x); // expected-warning {{expression result unused}}
}
struct Callable {
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Wunused-value -verify %s
+// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s
template<typename T> void f() {
T t;
t = 17;
// This previously triggered a crash because the class has not been defined.
@implementation RDar7495713 (rdar_7495713_cat) // expected-error{{cannot find interface declaration for 'RDar7495713'}}
- (id) rdar_7495713 {
- __PRETTY_FUNCTION__;
+ __PRETTY_FUNCTION__; // expected-warning{{expression result unused}}
}
@end