aaron.ballman added a comment.
In D106732#2911552 <https://reviews.llvm.org/D106732#2911552>, @beanz wrote:
> Covered taken #elif* directives per @aaron.ballmon's feedback.
Thanks!
> Handling non-taken #elif directives is non-trivial because clang skips
> parsing the conditionals for non-taken directives. At present clang won't
> even error on malformed #elif directives if an earlier branch is taken.
Yeah, that's what I was worried about. Can you add some FIXME comments into
`Preprocessor::SkipExcludedConditionalBlock()` about wanting to diagnose this
situation, and add some test cases with FIXME comments showing we know we don't
handle this case perfectly yet?
> Also with this update I refactored the error emitting code out to a function
> on the Preprocessor, since it is just getting copy and pasted over and over
> again, and this change would have added another copy.
Thank you, that's a nice cleanup!
================
Comment at: clang/include/clang/Lex/Preprocessor.h:2409
+
+ void emitMacroExpansionWarnings(Token &Identifier);
+
----------------
================
Comment at: clang/lib/Lex/Preprocessor.cpp:1416
+void Preprocessor::emitMacroExpansionWarnings(Token &Identifier) {
+ if (Identifier.getIdentifierInfo()->isDeprecatedMacro()) {
----------------
================
Comment at: clang/test/Lexer/deprecate-macro.c:62
+
+// Test that we diagnose on #elif
+#if 0
----------------
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106732/new/
https://reviews.llvm.org/D106732
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits