aaron.ballman added a comment.
It looks like precommit CI caught some related failures:
Failed Tests (7):
Clang :: Lexer/deprecate-macro.c
Clang :: Lexer/unsafe-macro.c
Clang :: Preprocessor/elifdef.c
Clang :: Preprocessor/if_warning.c
Clang :: Preprocessor/ifdef-recover.c
Clang :: Preprocessor/macro_misc.c
Clang :: Preprocessor/macro_vaopt_check.cpp
================
Comment at: clang/include/clang/Basic/DiagnosticLexKinds.td:696-698
+def ext_c2x_pp_directive : Extension<
+ "%select{#elifdef|#elifndef}0 is a C2x extension">,
+ InGroup<CPre2xCompatPedantic>;
----------------
ken-matsui wrote:
> aaron.ballman wrote:
> > I think we need two diagnostics, one for C2x and one for C++2b
> > (https://wg21.link/p2334 was adopted for C++23). Each of these diagnostics
> > should come in a pair:
> > ```
> > def warn_cxx20_compat_pp_directive : Warning<
> > "use of a '#%select{elifdef|elifndef}0' directive is incompatible with
> > C++ standards before C++2b",
> > InGroup<CXXPre2bCompat>, DefaultIgnore;
> > def ext_cxx20_pp_directive : ExtWarn<
> > "use of a '#%select{elifdef|elifndef}0' directive is a C++2b extension",
> > InGroup<CXX2b>;
> > ```
> > and similar for C, except with wording about C standards and in the C
> > warning groups.
> I thought I had to use `Extension` here, but what is the difference between
> `Warning`, `ExtWarn`, and `Extension`?
Great question!
`Extension` diagnostics are warnings that are enabled via `-pedantic` but
otherwise off by default.
`ExtWarn` diagnostics are warnings that are enabled via `-pedantic` but are
also on by default.
`Warning` diagnostics are warnings. You can use things like `DefaultIgnore` or
`DefaultError` to control the default behavior of the warning.
`Error` diagnostics are errors.
You'll typically use `Extension` or `ExtWarn` for things that are extensions of
some sort, but which one you use depends on how important the warning is. We've
traditionally handled "use of whatever is a C++NN extension" warnings as
`ExtWarn` whereas the "use of whatever is incompatible with C++ standards
before C++NN" warnings are usually `Extension`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125178/new/
https://reviews.llvm.org/D125178
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits