[clang] [APINotes] Diagnose invalid Where.Parameters selectors (PR #209408)
Gábor Horváth via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 28 05:31:15 PDT 2026
================
@@ -893,6 +911,59 @@ APINotesReader::Implementation::getIdentifier(llvm::StringRef Str) {
return *Known;
}
+std::optional<llvm::StringRef>
+APINotesReader::Implementation::getIdentifierString(IdentifierID ID) {
+ if (!IdentifierTable)
+ return std::nullopt;
+
+ if (ID == IdentifierID(0))
+ return llvm::StringRef();
+
+ if (!IdentifierStrings) {
+ IdentifierStrings.emplace();
+ // keys() and data() iterate over the same serialized entries in lockstep.
+ // The serialized hash-table order is not guaranteed to be identifier-ID
+ // order, so keep an explicit ID-to-string map rather than indexing a vector
+ // by ID.
+ auto Identifiers = IdentifierTable->keys();
+ auto IDs = IdentifierTable->data();
+ auto Identifier = Identifiers.begin();
+ auto KnownID = IDs.begin();
+ auto IdentifierEnd = Identifiers.end();
+ auto KnownIDEnd = IDs.end();
+ for (; Identifier != IdentifierEnd && KnownID != KnownIDEnd;
+ ++Identifier, ++KnownID)
+ IdentifierStrings->try_emplace(static_cast<uint32_t>(*KnownID),
+ *Identifier);
+ }
+
+ auto Known = IdentifierStrings->find(static_cast<uint32_t>(ID));
+ if (Known == IdentifierStrings->end())
+ return std::nullopt;
+ return Known->second;
+}
+
+template <typename TableT>
+bool APINotesReader::Implementation::collectExactFunctionParameterSelectors(
----------------
Xazax-hun wrote:
We seem to always return true from this function. Should we remove the return type or is there a typo somewhere?
https://github.com/llvm/llvm-project/pull/209408
More information about the cfe-commits
mailing list