aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grumberg <dgrumberg@apple.com>2023-12-07 17:30:02 +0000
committerGitHub <noreply@github.com>2023-12-07 17:30:02 +0000
commit789a5bbb7d5befac6c29a774d3db487abe881331 (patch)
treece79965c3b9c97f94ecdc2873f6356d766b44bb9
parentdb3bc494875626c6b8e7392f08c631489b056702 (diff)
downloadllvm-789a5bbb7d5befac6c29a774d3db487abe881331.zip
llvm-789a5bbb7d5befac6c29a774d3db487abe881331.tar.gz
llvm-789a5bbb7d5befac6c29a774d3db487abe881331.tar.bz2
[clang][ExtractAPI] Allow serialization for ObjC++ headers (#74733)
rdar://79874441
-rw-r--r--clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp3
-rw-r--r--clang/test/ExtractAPI/language.c101
2 files changed, 101 insertions, 3 deletions
diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
index 931933b..d9675b0 100644
--- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
+++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
@@ -199,9 +199,10 @@ StringRef getLanguageName(Language Lang) {
return "objective-c";
case Language::CXX:
return "c++";
+ case Language::ObjCXX:
+ return "objective-c++";
// Unsupported language currently
- case Language::ObjCXX:
case Language::OpenCL:
case Language::OpenCLCXX:
case Language::CUDA:
diff --git a/clang/test/ExtractAPI/language.c b/clang/test/ExtractAPI/language.c
index 6facd18..fe98626 100644
--- a/clang/test/ExtractAPI/language.c
+++ b/clang/test/ExtractAPI/language.c
@@ -4,29 +4,42 @@
// RUN: %t/c.reference.output.json.in >> %t/c.reference.output.json
// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
// RUN: %t/objc.reference.output.json.in >> %t/objc.reference.output.json
+// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
+// RUN: %t/objcpp.reference.output.json.in >> %t/objcpp.reference.output.json
-// RUN: %clang -extract-api -x c-header -target arm64-apple-macosx \
+// RUN: %clang_cc1 -extract-api -x c-header -triple arm64-apple-macosx \
// RUN: %t/c.h -o %t/c.output.json | FileCheck -allow-empty %s
-// RUN: %clang -extract-api -x objective-c-header -target arm64-apple-macosx \
+// RUN: %clang_cc1 -extract-api -x objective-c-header -triple arm64-apple-macosx \
// RUN: %t/objc.h -o %t/objc.output.json | FileCheck -allow-empty %s
+// RUN: %clang_cc1 -extract-api -x objective-c++-header -triple arm64-apple-macosx \
+// RUN: %t/objcpp.h -o %t/objcpp.output.json | FileCheck -allow-empty %s
// Generator version is not consistent across test runs, normalize it.
// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
// RUN: %t/c.output.json >> %t/c.output-normalized.json
// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
// RUN: %t/objc.output.json >> %t/objc.output-normalized.json
+// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
+// RUN: %t/objcpp.output.json >> %t/objcpp.output-normalized.json
// RUN: diff %t/c.reference.output.json %t/c.output-normalized.json
// RUN: diff %t/objc.reference.output.json %t/objc.output-normalized.json
+// RUN: diff %t/objcpp.reference.output.json %t/objcpp.output-normalized.json
// CHECK-NOT: error:
// CHECK-NOT: warning:
//--- c.h
char c;
+///expected-no-diagnostics
//--- objc.h
char objc;
+///expected-no-diagnostics
+
+//--- objcpp.h
+char objcpp;
+///expected-no-diagnostics
//--- c.reference.output.json.in
{
@@ -196,3 +209,87 @@ char objc;
}
]
}
+//--- objcpp.reference.output.json.in
+{
+ "metadata": {
+ "formatVersion": {
+ "major": 0,
+ "minor": 5,
+ "patch": 3
+ },
+ "generator": "?"
+ },
+ "module": {
+ "name": "",
+ "platform": {
+ "architecture": "arm64",
+ "operatingSystem": {
+ "minimumVersion": {
+ "major": 11,
+ "minor": 0,
+ "patch": 0
+ },
+ "name": "macosx"
+ },
+ "vendor": "apple"
+ }
+ },
+ "relationships": [],
+ "symbols": [
+ {
+ "accessLevel": "public",
+ "declarationFragments": [
+ {
+ "kind": "typeIdentifier",
+ "preciseIdentifier": "c:C",
+ "spelling": "char"
+ },
+ {
+ "kind": "text",
+ "spelling": " "
+ },
+ {
+ "kind": "identifier",
+ "spelling": "objcpp"
+ },
+ {
+ "kind": "text",
+ "spelling": ";"
+ }
+ ],
+ "identifier": {
+ "interfaceLanguage": "objective-c++",
+ "precise": "c:@objcpp"
+ },
+ "kind": {
+ "displayName": "Global Variable",
+ "identifier": "objective-c++.var"
+ },
+ "location": {
+ "position": {
+ "character": 5,
+ "line": 0
+ },
+ "uri": "file://INPUT_DIR/objcpp.h"
+ },
+ "names": {
+ "navigator": [
+ {
+ "kind": "identifier",
+ "spelling": "objcpp"
+ }
+ ],
+ "subHeading": [
+ {
+ "kind": "identifier",
+ "spelling": "objcpp"
+ }
+ ],
+ "title": "objcpp"
+ },
+ "pathComponents": [
+ "objcpp"
+ ]
+ }
+ ]
+}