exprs.c revision 31e21e05623ce9d11b1a893fecb87ad349df6c7d
135080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner// RUN: clang %s -verify -pedantic -fsyntax-only
235080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner
335080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner// PR1966
435080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner_Complex double test1() {
535080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner  return __extension__ 1.0if;
635080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner}
735080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner
835080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner_Complex double test2() {
935080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner  return 1.0if;    // expected-warning {{imaginary constants are an extension}}
1035080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner}
1135080844d3e634c7c1b2875f476ab5f697eece61Chris Lattner
12baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner// rdar://6097308
13baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattnervoid test3() {
14baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner  int x;
15baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner  (__extension__ x) = 10;
16baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner}
17baf0d6678418e0dd9309438c3e50274253cfc7b2Chris Lattner
182c15647dce6de66f673cc64236913732d6289317Chris Lattner// rdar://6162726
192c15647dce6de66f673cc64236913732d6289317Chris Lattnervoid test4() {
202c15647dce6de66f673cc64236913732d6289317Chris Lattner      static int var;
212c15647dce6de66f673cc64236913732d6289317Chris Lattner      var =+ 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}}
222c15647dce6de66f673cc64236913732d6289317Chris Lattner      var =- 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}}
232c15647dce6de66f673cc64236913732d6289317Chris Lattner      var = +5;
242c15647dce6de66f673cc64236913732d6289317Chris Lattner      var = -5;
252c15647dce6de66f673cc64236913732d6289317Chris Lattner}
262c15647dce6de66f673cc64236913732d6289317Chris Lattner
27ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner// rdar://6319320
28ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattnervoid test5(int *X, float *P) {
29ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner  (float*)X = P;   // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
30ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner}
31ca354faa7e9b99af17070c82b9662a5fca76422cChris Lattner
32b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattnervoid test6() {
33b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner  int X;
34b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner  X();  // expected-error {{called object type 'int' is not a function or function pointer}}
35b1b4d337fafe30823b581cbfaa1641f37541fffeChris Lattner}
367ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner
377ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattnervoid test7(int *P, _Complex float Gamma) {
387ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner   P = (P-42) + Gamma*4;  // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}}
397ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner}
407ca14257731eedb4cd16104cc20a6813d2deb0dbChris Lattner
41670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner
42670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner// rdar://6095061
43670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattnerint test8(void) {
44670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner  int i;
454209a3909d827efb7648a9355f2976ca656da704Chris Lattner  __builtin_choose_expr (0, 42, i) = 10;  // expected-warning {{extension used}}
46670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner  return i;
47670a62cd1d51042ea076cda5e93f26a1d8327fb3Chris Lattner}
4831e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner
4931e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner
5031e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner// PR3386
5131e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattnerstruct f { int x : 4;  float y[]; };
5231e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattnerint test9(struct f *P) {
5331e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner  return __alignof(P->x) +  // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}}
5431e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner         __alignof(P->y);   // ok. expected-warning {{extension used}}
5531e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner}
5631e21e05623ce9d11b1a893fecb87ad349df6c7dChris Lattner
57