================ @@ -2068,7 +2068,8 @@ bool Lexer::LexNumericConstant(Token &Result, const char *CurPtr) { } // If we have a digit separator, continue. - if (C == '\'' && (LangOpts.CPlusPlus14 || LangOpts.C23)) { + if (C == '\'' && + (LangOpts.CPlusPlus14 || LangOpts.C23 || ParsingPreprocessorDirective)) { ---------------- AaronBallman wrote:
>> I'm still wondering about the question I asked here: >> https://github.com/llvm/llvm-project/pull/93753#issuecomment-2173666602 > Are there any comments that weren't addressed by > https://github.com/llvm/llvm-project/pull/93753#issuecomment-2204578263? Oh, thank you for pointing that out, somehow I missed that you commented (sorry)! I'll keep the discussion over there. > This doesn't need to scale. We'd only do this for options that control > lexing. FWIW, code that says "literal digit separators are enabled in C++14+, > C23+, or when explicitly allowed" seems more logical to me than checking > ParsingPreprocessorDirective, which doesn't really explain why we're suddenly > allowing digit separators. Yeah, this was the bit I think I was missing from the earlier discussion. Making sure I understand correctly, it's not *all* tokens we need to care about, it's only ones that matter for scanning of dependencies, which basically means punctuators, preprocessor directive keywords, and literals? Or do you mean "control lexing" in terms of what is or isn't a keyword (e.g., `_Atomic` is a keyword in C and C++ except when OpenCL is enabled)? https://github.com/llvm/llvm-project/pull/95798 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits