xref: /minix3/external/bsd/llvm/dist/clang/test/Preprocessor/extension-warning.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc // The preprocessor shouldn't warn about extensions within macro bodies that
4*f4a2713aSLionel Sambuc // aren't expanded.
5*f4a2713aSLionel Sambuc #define TY typeof
6*f4a2713aSLionel Sambuc #define TY1 typeof(1)
7*f4a2713aSLionel Sambuc 
8*f4a2713aSLionel Sambuc // But we should warn here
9*f4a2713aSLionel Sambuc TY1 x; // expected-warning {{extension}}
10*f4a2713aSLionel Sambuc TY(1) x; // FIXME: And we should warn here
11*f4a2713aSLionel Sambuc 
12*f4a2713aSLionel Sambuc // Note: this warning intentionally doesn't trigger on keywords like
13*f4a2713aSLionel Sambuc // __attribute; the standard allows implementation-defined extensions
14*f4a2713aSLionel Sambuc // prefixed with "__".
15*f4a2713aSLionel Sambuc // Current list of keywords this can trigger on:
16*f4a2713aSLionel Sambuc // inline, restrict, asm, typeof, _asm
17*f4a2713aSLionel Sambuc 
whatever()18*f4a2713aSLionel Sambuc void whatever() {}
19