1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s
229b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman
329b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman// Note that this puts the expected lines before the directives to work around
429b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman// limitations in the -verify mode.
529b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman
629b1d07a87a2038ae5b4128a0b534badd728707dEli Friedmanint x;
729b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak
829b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman#pragma weak x
929b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman
101dbe36ad5c916ddc51bfdae9831099bcd91ec64cEli Friedmanextern int z;
1129b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = =
1229b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z =
13e25ff83fb7eee9eeda89b6f2371bc33a37bf1028Ryan Flynn/* expected-warning {{weak identifier 'y' never declared}} */ #pragma weak z = y
1429b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman
151dbe36ad5c916ddc51bfdae9831099bcd91ec64cEli Friedmanextern int a;
1629b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a b
1729b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a = x c
18961d0573487933199cb287ce8c472121812b3c78Richard Smith
19961d0573487933199cb287ce8c472121812b3c78Richard Smith
20961d0573487933199cb287ce8c472121812b3c78Richard Smithvoid pragma_is_not_a_statement(int x)
21961d0573487933199cb287ce8c472121812b3c78Richard Smith{
22961d0573487933199cb287ce8c472121812b3c78Richard Smith  int t;
23961d0573487933199cb287ce8c472121812b3c78Richard Smith
24961d0573487933199cb287ce8c472121812b3c78Richard Smith  {
25961d0573487933199cb287ce8c472121812b3c78Richard Smith    if (x)
26961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t
27961d0573487933199cb287ce8c472121812b3c78Richard Smith    else // expected-error {{expected expression}}
28961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t
29961d0573487933199cb287ce8c472121812b3c78Richard Smith  }
30961d0573487933199cb287ce8c472121812b3c78Richard Smith
31961d0573487933199cb287ce8c472121812b3c78Richard Smith  switch (x) {
32961d0573487933199cb287ce8c472121812b3c78Richard Smith    case 1:
33961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t
34961d0573487933199cb287ce8c472121812b3c78Richard Smith  } // expected-error {{expected statement}}
35961d0573487933199cb287ce8c472121812b3c78Richard Smith  switch(x) {
36961d0573487933199cb287ce8c472121812b3c78Richard Smith    default:
37961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t
38961d0573487933199cb287ce8c472121812b3c78Richard Smith  } // expected-error {{expected statement}}
39961d0573487933199cb287ce8c472121812b3c78Richard Smith
40961d0573487933199cb287ce8c472121812b3c78Richard Smithlabel:
41961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t
42961d0573487933199cb287ce8c472121812b3c78Richard Smith} // expected-error {{expected statement}}
43961d0573487933199cb287ce8c472121812b3c78Richard Smith
44961d0573487933199cb287ce8c472121812b3c78Richard Smith
45