https://github.com/QuietMisdreavus created 
https://github.com/llvm/llvm-project/pull/119925

Resolves rdar://140298287

ExtractAPI's support for printing Objective-C category extensions from other 
modules emits symbol graphs with an `extendedmod...@hostmodule.symbols.json`. 
However, this is backwards from existing symbol graph practices, causing issues 
when these symbol graphs are consumed alongside symbol graphs generated with 
other tools like Swift. This PR flips the naming scheme to be in line with 
existing symbol graph tooling.

>From 506ac691d11e5658932f0f9388059f13407011cd Mon Sep 17 00:00:00 2001
From: Vera Mitchell <v...@apple.com>
Date: Fri, 13 Dec 2024 13:47:18 -0700
Subject: [PATCH] reorder the module names in extension symbol graph file names

rdar://140298287
---
 .../ExtractAPI/Serialization/SymbolGraphSerializer.cpp   | 4 ++--
 clang/test/ExtractAPI/objc_external_category.m           | 9 ++++++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp 
b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
index c730c062b6a1d5..2c70e77b6246c6 100644
--- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
+++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
@@ -1067,9 +1067,9 @@ void SymbolGraphSerializer::serializeWithExtensionGraphs(
 
   for (auto &ExtensionSGF : Serializer.ExtendedModules) {
     if (auto ExtensionOS =
-            CreateOutputStream(ExtensionSGF.getKey() + "@" + API.ProductName))
+            CreateOutputStream(API.ProductName + "@" + ExtensionSGF.getKey()))
       Serializer.serializeGraphToStream(*ExtensionOS, Options,
-                                        ExtensionSGF.getKey(),
+                                        API.ProductName,
                                         std::move(ExtensionSGF.getValue()));
   }
 }
diff --git a/clang/test/ExtractAPI/objc_external_category.m 
b/clang/test/ExtractAPI/objc_external_category.m
index 8afc92489f28b6..1947237d088e8f 100644
--- a/clang/test/ExtractAPI/objc_external_category.m
+++ b/clang/test/ExtractAPI/objc_external_category.m
@@ -46,7 +46,7 @@ @interface ExtInterface
 // Symbol graph from the build without extension SGFs should be identical to 
main symbol graph with extension SGFs
 // RUN: diff %t/symbols/Module.symbols.json %t/ModuleNoExt.symbols.json
 
-// RUN: FileCheck %s --input-file 
%t/symbols/externalmod...@module.symbols.json --check-prefix EXT
+// RUN: FileCheck %s --input-file 
%t/symbols/mod...@externalmodule.symbols.json --check-prefix EXT
 // EXT-DAG: "!testRelLabel": "memberOf $ c:objc(cs)ExtInterface(py)Property $ 
c:objc(cs)ExtInterface"
 // EXT-DAG: "!testRelLabel": "memberOf $ 
c:objc(cs)ExtInterface(im)InstanceMethod $ c:objc(cs)ExtInterface"
 // EXT-DAG: "!testRelLabel": "memberOf $ c:objc(cs)ExtInterface(cm)ClassMethod 
$ c:objc(cs)ExtInterface"
@@ -55,3 +55,10 @@ @interface ExtInterface
 // EXT-DAG: "!testLabel": "c:objc(cs)ExtInterface(cm)ClassMethod"
 // EXT-NOT: "!testLabel": "c:objc(cs)ExtInterface"
 // EXT-NOT: "!testLabel": "c:objc(cs)ModInterface"
+
+// Ensure that the 'module' metadata for the extension symbol graph should 
still reference the
+// declaring module
+
+// RUN: FileCheck %s --input-file 
%t/symbols/mod...@externalmodule.symbols.json --check-prefix META
+// META:       "module": {
+// META-NEXT:    "name": "Module",

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to