WG14 adopted N2645 and WG21 EWG has accepted P2334 in principle (still subject to full EWG vote + CWG review + plenary vote), which add support for #elifdef as shorthand for #elif defined and #elifndef as shorthand for #elif !defined. This patch adds support for the new preprocessor directives.
33 lines
578 B
C
33 lines
578 B
C
// RUN: %clang_cc1 %s -Eonly -Werror=undef -verify
|
|
|
|
extern int x;
|
|
|
|
#if foo // expected-error {{'foo' is not defined, evaluates to 0}}
|
|
#endif
|
|
|
|
#ifdef foo
|
|
#elifdef foo
|
|
#endif
|
|
|
|
#if defined(foo)
|
|
#endif
|
|
|
|
|
|
// PR3938
|
|
#if 0
|
|
#ifdef D
|
|
#elifdef D
|
|
#else 1 // Should not warn due to C99 6.10p4
|
|
#endif
|
|
#endif
|
|
|
|
// rdar://9475098
|
|
#if 0
|
|
#else 1 // expected-warning {{extra tokens}}
|
|
#endif
|
|
|
|
// PR6852
|
|
#if 'somesillylongthing' // expected-warning {{character constant too long for its type}} \
|
|
// expected-warning {{multi-character character constant}}
|
|
#endif
|