Skip to content

Commit 407eed0

Browse files
authored
Merge pull request #17273 from dcci/42typerecoext
2 parents 4be0aad + 05e9839 commit 407eed0

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

lib/IDE/TypeReconstruction.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,6 +1839,30 @@ static void VisitNodeInOut(
18391839
}
18401840
}
18411841

1842+
static void VisitNodeExistentialMetatype(ASTContext *ast,
1843+
Demangle::NodePointer cur_node,
1844+
VisitNodeResult &result) {
1845+
VisitNodeResult type_result;
1846+
Optional<MetatypeRepresentation> metatype_repr;
1847+
1848+
for (auto &child : *cur_node) {
1849+
switch (child->getKind()) {
1850+
case Demangle::Node::Kind::Type:
1851+
VisitNode(ast, child, type_result);
1852+
break;
1853+
default:
1854+
break;
1855+
}
1856+
}
1857+
1858+
if (type_result.HasSingleType())
1859+
result._types.push_back(
1860+
ExistentialMetatypeType::get(type_result._types[0], metatype_repr));
1861+
else
1862+
result._error = stringWithFormat(
1863+
"instance type for existential metatype cannot be uniquely resolved");
1864+
}
1865+
18421866
static void VisitNodeMetatype(
18431867
ASTContext *ast,
18441868
Demangle::NodePointer cur_node, VisitNodeResult &result) {
@@ -2284,6 +2308,10 @@ static void VisitNode(
22842308
VisitNodeInOut(ast, node, result);
22852309
break;
22862310

2311+
case Demangle::Node::Kind::ExistentialMetatype:
2312+
VisitNodeExistentialMetatype(ast, node, result);
2313+
break;
2314+
22872315
case Demangle::Node::Kind::Metatype:
22882316
VisitNodeMetatype(ast, node, result);
22892317
break;

test/DebugInfo/Inputs/type-reconstr-names.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ $Ss5Int32VD ---> Int32
44
$S4blah4mainyyF8PatatinoL_VMa ---> Can't resolve type of $S4blah4mainyyF8PatatinoL_VMa
55
$Ss10CollectionP7Element ---> Can't resolve type of $Ss10CollectionP7Element
66
$Ss15ContiguousArrayV9formIndex5afterySiz_tFSS_Tg5 ---> (inout Int) -> ()
7+
<<<<<<< HEAD
78
$S13EyeCandySwift21_previousUniqueNumber33_ADC08935D64EA4F796440E7335798735LLs6UInt64Vvp -> UInt64
9+
$SSayypXpG ---> Array<Any.Type>

0 commit comments

Comments
 (0)