Skip to content

Commit 9a59bc8

Browse files
Merge pull request #11452 from adrian-prantl/cherry-pick-next-LLDB-Support-GetNumChildren-on-thin-function-types
[Cherry-pick into next] [LLDB] Support GetNumChildren on thin function types
2 parents 8de16d1 + b803929 commit 9a59bc8

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3088,9 +3088,8 @@ bool TypeSystemSwiftTypeRef::IsFunctionType(opaque_compiler_type_t type) {
30883088
using namespace swift::Demangle;
30893089
Demangler dem;
30903090
NodePointer node = DemangleCanonicalOutermostType(dem, type);
3091-
// Note: There are a number of other candidates, and this list may need
3092-
// updating. Ex: `NoEscapeFunctionType`, `ThinFunctionType`, etc.
30933091
return node && (node->getKind() == Node::Kind::FunctionType ||
3092+
node->getKind() == Node::Kind::ThinFunctionType ||
30943093
node->getKind() == Node::Kind::NoEscapeFunctionType ||
30953094
node->getKind() == Node::Kind::ImplFunctionType);
30963095
};

lldb/unittests/Symbol/TestTypeSystemSwiftTypeRef.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,18 @@ TEST_F(TestTypeSystemSwiftTypeRef, Function) {
148148
ASSERT_TRUE(void_void.IsFunctionPointerType());
149149
ASSERT_EQ(void_void.GetNumberOfFunctionArguments(), 0UL);
150150
}
151+
{
152+
NodePointer n = b.GlobalType(
153+
b.Node(Node::Kind::ThinFunctionType,
154+
b.Node(Node::Kind::ArgumentTuple,
155+
b.Node(Node::Kind::Type, b.Node(Node::Kind::Tuple))),
156+
b.Node(Node::Kind::ReturnType,
157+
b.Node(Node::Kind::Type, b.Node(Node::Kind::Tuple)))));
158+
CompilerType void_void = GetCompilerType(b.Mangle(n));
159+
ASSERT_TRUE(void_void.IsFunctionType());
160+
ASSERT_TRUE(void_void.IsFunctionPointerType());
161+
ASSERT_EQ(void_void.GetNumberOfFunctionArguments(), 0UL);
162+
}
151163
{
152164
NodePointer n = b.GlobalType(
153165
b.Node(Node::Kind::ImplFunctionType, b.Node(Node::Kind::ImplEscaping),

0 commit comments

Comments
 (0)