1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s 2*67e74705SXin Li 3*67e74705SXin Li #pragma clang diagnostic pop // expected-warning{{pragma diagnostic pop could not pop, no matching push}} 4*67e74705SXin Li 5*67e74705SXin Li #pragma clang diagnostic puhs // expected-warning {{pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'}} 6*67e74705SXin Li 7*67e74705SXin Li int a = 'df'; // expected-warning{{multi-character character constant}} 8*67e74705SXin Li 9*67e74705SXin Li #pragma clang diagnostic push 10*67e74705SXin Li #pragma clang diagnostic ignored "-Wmultichar" 11*67e74705SXin Li 12*67e74705SXin Li int b = 'df'; // no warning. 13*67e74705SXin Li #pragma clang diagnostic pop 14*67e74705SXin Li 15*67e74705SXin Li int c = 'df'; // expected-warning{{multi-character character constant}} 16*67e74705SXin Li 17*67e74705SXin Li #pragma clang diagnostic pop // expected-warning{{pragma diagnostic pop could not pop, no matching push}} 18*67e74705SXin Li 19*67e74705SXin Li // Test -Weverything 20*67e74705SXin Li ppo0()21*67e74705SXin Livoid ppo0(){} // first verify that we do not give anything on this 22*67e74705SXin Li #pragma clang diagnostic push // now push 23*67e74705SXin Li 24*67e74705SXin Li #pragma clang diagnostic warning "-Weverything" ppr1()25*67e74705SXin Livoid ppr1(){} // expected-warning {{no previous prototype for function 'ppr1'}} 26*67e74705SXin Li 27*67e74705SXin Li #pragma clang diagnostic push // push again 28*67e74705SXin Li #pragma clang diagnostic ignored "-Weverything" // Set to ignore in this level. pps2()29*67e74705SXin Livoid pps2(){} 30*67e74705SXin Li #pragma clang diagnostic warning "-Weverything" // Set to warning in this level. ppt2()31*67e74705SXin Livoid ppt2(){} // expected-warning {{no previous prototype for function 'ppt2'}} 32*67e74705SXin Li #pragma clang diagnostic error "-Weverything" // Set to error in this level. ppt3()33*67e74705SXin Livoid ppt3(){} // expected-error {{no previous prototype for function 'ppt3'}} 34*67e74705SXin Li #pragma clang diagnostic pop // pop should go back to warning level 35*67e74705SXin Li pps1()36*67e74705SXin Livoid pps1(){} // expected-warning {{no previous prototype for function 'pps1'}} 37*67e74705SXin Li 38*67e74705SXin Li 39*67e74705SXin Li #pragma clang diagnostic pop // Another pop should disble it again ppu()40*67e74705SXin Livoid ppu(){} 41*67e74705SXin Li 42