Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -verify -fsyntax-only -Wshadow -Wold-style-cast %s
      2 
      3 // Test that macro expansions from system headers don't trigger 'syntactic'
      4 // warnings that are not actionable.
      5 
      6 #ifdef IS_SYSHEADER
      7 #pragma clang system_header
      8 
      9 #define SANITY(a) (a / 0)
     10 
     11 #define SHADOW(a) __extension__({ int v = a; v; })
     12 
     13 #define OLD_STYLE_CAST(a) ((int) (a))
     14 
     15 #else
     16 
     17 #define IS_SYSHEADER
     18 #include __FILE__
     19 
     20 void testSanity() {
     21   // Validate that the test is set up correctly
     22   int i = SANITY(0); // expected-warning {{division by zero is undefined}}
     23 }
     24 
     25 void PR16093() {
     26   // no -Wshadow in system macro expansion
     27   int i = SHADOW(SHADOW(1));
     28 }
     29 
     30 void PR18147() {
     31   // no -Wold_style_cast in system macro expansion
     32   int i = OLD_STYLE_CAST(0);
     33 }
     34 
     35 #endif
     36