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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits