[clang] [APINotes] Normalize Where.Parameters selector spellings (PR #213043)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 10 06:47:00 PDT 2026
================
@@ -809,6 +810,31 @@ getFunctionSelectorKey(llvm::StringRef Name,
return Key.str().str();
}
+// YAML conversion has parameter spellings but no AST context. Keep this as a
+// narrow lexical normalization step. Declaration spellings are normalized with
+// QualType in Sema before using the same lexical selector normalization.
+static void normalizeWhereParameterList(
+ llvm::ArrayRef<llvm::StringRef> Parameters,
+ llvm::SmallVectorImpl<std::string> &NormalizedParameters) {
+ NormalizedParameters.clear();
+ NormalizedParameters.reserve(Parameters.size());
+
+ for (llvm::StringRef Parameter : Parameters)
+ NormalizedParameters.push_back(
+ normalizeAPINotesParameterSelector(Parameter));
+}
+
+static llvm::SmallVector<llvm::StringRef, 4>
+getParameterSelectorRefs(llvm::ArrayRef<std::string> Parameters) {
----------------
StoeckOverflow wrote:
I think templating `getFunctionSelectorKey` would remove this helper from the duplicate-key path, but not from the writer path. The normalized selector spellings are owned as `std::string`s, while `APINotesWriter::addCXXMethod` and `addGlobalFunction` currently take `ArrayRef<StringRef>`.
To remove the helper entirely, I would also need to change the writer API or add writer overloads for the owning string range. That feels like a broader writer API cleanup, so I’d prefer to keep this local adapter here unless you think the writer API should be generalized as part of this patch.
https://github.com/llvm/llvm-project/pull/213043
More information about the cfe-commits
mailing list