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

Reply via email to