8000 [lldb][swift] Fix GetParentIfClosure for static methods of classes · swiftlang/llvm-project@a2b816d · GitHub
[go: up one dir, main page]

Skip to content

Commit a2b816d

Browse files
[lldb][swift] Fix GetParentIfClosure for static methods of classes
These use the Static mangled node, which we were not handling.
1 parent 4f4a7bc commit a2b816d

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeNames.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,7 @@ std::string SwiftLanguageRuntime::GetParentNameIfClosure(StringRef name) {
15131513
Kind::ExplicitClosure};
15141514
static const auto function_kinds = {Kind::ImplicitClosure,
15151515
Kind::ExplicitClosure, Kind::Function,
1516-
Kind::Constructor};
1516+
Kind::Constructor, Kind::Static};
15171517
auto *closure_node = swift_demangle::GetFirstChildOfKind(node, closure_kinds);
15181518
auto *parent_func_node =
15191519
swift_demangle::GetFirstChildOfKind(closure_node, function_kinds);

lldb/test/API/lang/swift/closures_var_not_captured/TestSwiftClosureVarNotCaptured.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,27 @@ def test_async_closure(self):
110110
def test_ctor_class_closure(self):
111111
self.build()
112112
(target, process, thread) = self.get_to_bkpt("break_ctor_class")
113-
check_not_captured_error(self, thread.frames[0], "input", "MY_STRUCT.init(input:)")
114-
check_not_captured_error(self, thread.frames[0], "find_me", "MY_STRUCT.init(input:)")
113+
check_not_captured_error(
114+
self, thread.frames[0], "input", "MY_STRUCT.init(input:)"
115+
)
116+
check_not_captured_error(
117+
self, thread.frames[0], "find_me", "MY_STRUCT.init(input:)"
118+
)
115119
check_no_enhanced_diagnostic(self, thread.frames[0], "dont_find_me")
120+
121+
lldbutil.continue_to_source_breakpoint(
122+
self, process, "break_static_member", lldb.SBFileSpec("main.swift")
123+
)
124+
check_not_captured_error(
125+
self,
126+
thread.frames[0],
127+
"input_static",
128+
"static MY_STRUCT.static_func(input_static:)",
129+
)
130+
check_not_captured_error(
131+
self,
132+
thread.frames[0],
133+
"find_me_static",
134+
"static MY_STRUCT.static_func(input_static:)",
135+
)
136+
check_no_enhanced_diagnostic(self, thread.frames[0], "dont_find_me_static")

lldb/test/API/lang/swift/closures_var_not_captured/main.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,18 @@ class MY_STRUCT {
9595
}
9696
let dont_find_me = "hello"
9797
}
98+
99+
static func static_func(input_static: [Int]) {
100+
let find_me_static = "hello"
101+
let _ = input_static.map {
102+
return $0 // break_static_member
103+
}
104+
let dont_find_me_static = "hello"
105+
}
98106
}
99107

100108
func_1(arg: 42)
101109
func_2(arg: 42)
102110
await func_3(arg: 42)
103111
let _ = MY_STRUCT(input: [1, 2])
112+
MY_STRUCT.static_func(input_static: [42])

0 commit comments

Comments
 (0)
0