Skip to content

Commit fe93b19

Browse files
committed
Add a demangler option to hide the "__C" module name.
This part of a series of patches to bring ASTPrinter and Swift Demangler to feature parity, which is needed by LLDB, which depends on using the strings produced by either interchangibly. rdar://problem/63700540
1 parent 52e13af commit fe93b19

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

include/swift/Demangling/Demangle.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ struct DemangleOptions {
5858
bool ShowFunctionArgumentTypes = true;
5959
bool DisplayDebuggerGeneratedModule = true;
6060
bool DisplayStdlibModule = true;
61+
bool DisplayObjCModule = true;
6162
std::function<std::string(uint64_t, uint64_t)> GenericParameterName =
6263
genericParameterName;
6364

lib/Demangling/NodePrinter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ class NodePrinter {
246246
if (Context->getKind() == Node::Kind::Module) {
247247
if (Context->getText() == swift::STDLIB_NAME)
248248
return Options.DisplayStdlibModule;
249+
if (Context->getText() == swift::MANGLING_MODULE_OBJC)
250+
return Options.DisplayObjCModule;
249251
if (Context->getText().startswith(LLDB_EXPRESSIONS_MODULE_NAME_PREFIX))
250252
return Options.DisplayDebuggerGeneratedModule;
251253
}

test/Demangle/demangle-special-options.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ RUN: swift-demangle -display-stdlib-module=true sSi | %FileCheck %s --check-pref
22
SWIFT-INT: {{ Swift.Int$}}
33
RUN: swift-demangle -display-stdlib-module=false sSi | %FileCheck %s --check-prefix=INT
44
INT: {{ Int$}}
5+
6+
RUN: swift-demangle -display-objc-module=true sSo6CGRectVD | %FileCheck %s --check-prefix=OBJC-CGRECT
7+
OBJC-CGRECT: {{ __C.CGRect$}}
8+
RUN: swift-demangle -display-objc-module=false sSo6CGRectVD | %FileCheck %s --check-prefix=CGRECT
9+
CGRECT: {{ CGRect$}}

tools/swift-demangle/swift-demangle.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ static llvm::cl::opt<bool> DisplayStdlibModule(
8080
"display-stdlib-module", llvm::cl::init(true),
8181
llvm::cl::desc("Qualify types originating from the Swift standard library"),
8282
llvm::cl::Hidden);
83+
84+
static llvm::cl::opt<bool> DisplayObjCModule(
85+
"display-objc-module", llvm::cl::init(true),
86+
llvm::cl::desc("Qualify types originating from the __ObjC module"),
87+
llvm::cl::Hidden);
8388
/// \}
8489

8590

@@ -243,6 +248,7 @@ int main(int argc, char **argv) {
243248
if (Simplified)
244249
options = swift::Demangle::DemangleOptions::SimplifiedUIDemangleOptions();
245250
options.DisplayStdlibModule = DisplayStdlibModule;
251+
options.DisplayObjCModule = DisplayObjCModule;
246252

247253
if (InputNames.empty()) {
248254
CompactMode = true;

0 commit comments

Comments
 (0)