================ @@ -4944,6 +4944,26 @@ void Parser::ParseStructDeclaration( } } +// TODO: All callers of this function should be moved to +// `Parser::ParseLexedAttributeList`. +void Parser::ParseLexedCAttributeList(LateParsedAttrList &LAs, bool EnterScope, + ParsedAttributes *OutAttrs) { + assert(LAs.parseSoon() && + "Attribute list should be marked for immediate parsing."); +#ifndef NDEBUG + auto LangStd = getLangOpts().LangStd; + if (LangStd != LangStandard::lang_unspecified) { + auto Lang = LangStandard::getLangStandardForKind(LangStd).getLanguage(); + assert(Lang == Language::C || Lang == Language::OpenCL); ---------------- delcypher wrote:
So parsing a `.m` file without specifying a language seems to result in ``` (lldb) p LangOpts.LangStd (clang::LangStandard::Kind) lang_gnu11 (lldb) p LangOpts.ObjC (unsigned int) 1 (lldb) p LangOpts.C99 (unsigned int) 1 (lldb) p LangOpts.C11 (unsigned int) 1 (lldb) p LangOpts.C17 (unsigned int) 0 (lldb) p LangOpts.C23 (unsigned int) 0 (lldb) p LangOpts.CPlusPlus (unsigned int) 0 (lldb) p clang::LangStandard::getLangStandardForKind(LangOpts.LangStd).getLanguage() (clang::Language) C ``` So my assert doesn't do the right thing for Objective-C. For Objective-C my assert thinks its C 🤦♂️. So it seems like my assert would want to be `assert(!getLangOpts().CPlusPlus && !getLangOpts().ObjC)`. However, I think I'll remove this assert for now because I intend (provided I can make it to work with our internal code) to remove this code entirely in favor of re-using the late parsing code that's used for C++. https://github.com/llvm/llvm-project/pull/93121 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits