Skip to content

Commit fc2f0a0

Browse files
authored
Merge pull request #17184 from dcci/existentialmetareco
2 parents 25af770 + ec40a54 commit fc2f0a0

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

lib/IDE/TypeReconstruction.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1906,6 +1906,30 @@ static void VisitNodeInOut(
19061906
}
19071907
}
19081908

1909+
static void VisitNodeExistentialMetatype(ASTContext *ast,
1910+
Demangle::NodePointer cur_node,
1911+
VisitNodeResult &result) {
1912+
VisitNodeResult type_result;
1913+
Optional<MetatypeRepresentation> metatype_repr;
1914+
1915+
for (auto &child : *cur_node) {
1916+
switch (child->getKind()) {
1917+
case Demangle::Node::Kind::Type:
1918+
VisitNode(ast, child, type_result);
1919+
break;
1920+
default:
1921+
break;
1922+
}
1923+
}
1924+
1925+
if (type_result.HasSingleType())
1926+
result._types.push_back(
1927+
ExistentialMetatypeType::get(type_result._types[0], metatype_repr));
1928+
else
1929+
result._error = stringWithFormat(
1930+
"instance type for existential metatype cannot be uniquely resolved");
1931+
}
1932+
19091933
static void VisitNodeMetatype(
19101934
ASTContext *ast,
19111935
Demangle::NodePointer cur_node, VisitNodeResult &result) {
@@ -2359,6 +2383,10 @@ static void VisitNode(
23592383
VisitNodeInOut(ast, node, result);
23602384
break;
23612385

2386+
case Demangle::Node::Kind::ExistentialMetatype:
2387+
VisitNodeExistentialMetatype(ast, node, result);
2388+
break;
2389+
23622390
case Demangle::Node::Kind::Metatype:
23632391
VisitNodeMetatype(ast, node, result);
23642392
break;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ $Ss10CollectionP7Element ---> Can't resolve type of $Ss10CollectionP7Element
66
$Ss15ContiguousArrayV9formIndex5afterySiz_tFSS_Tg5 ---> (inout Int) -> ()
77
$S12TypeReconstr8PatatinoaySiGD ---> Patatino<Int>
88
$S7ElementQzD ---> τ_0_0.Element
9-
$S13EyeCandySwift21_previousUniqueNumber33_ADC08935D64EA4F796440E7335798735LLs6UInt64Vvp -> UInt64
9+
$S13EyeCandySwift21_previousUniqueNumber33_ADC08935D64EA4F796440E7335798735LLs6UInt64Vvp ---> UInt64
10+
$SSayypXpG ---> Array<Any.Type>

0 commit comments

Comments
 (0)