Skip to content

Commit fab121e

Browse files
authored
Merge pull request #21123 from dcci/inoutagain
2 parents ad50a39 + 56e3da9 commit fab121e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lib/IDE/TypeReconstruction.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,6 +1913,18 @@ static void VisitNodeTypeAlias(
19131913
}
19141914
}
19151915

1916+
static void VisitNodeInOut(
1917+
ASTContext *ast,
1918+
Demangle::NodePointer cur_node, VisitNodeResult &result) {
1919+
VisitNodeResult type_result;
1920+
VisitNode(ast, cur_node->getFirstChild(), type_result);
1921+
if (type_result._types.size() == 1 && type_result._types[0]) {
1922+
result._types.push_back(InOutType::get(type_result._types[0]));
1923+
} else {
1924+
result._error = "couldn't resolve referent type";
1925+
}
1926+
}
1927+
19161928
static void VisitNodeExistentialMetatype(ASTContext *ast,
19171929
Demangle::NodePointer cur_node,
19181930
VisitNodeResult &result) {
@@ -2110,6 +2122,9 @@ static void VisitNodeTupleElement(
21102122

21112123
auto tupleType = tuple_type_result._types.front();
21122124
auto typeFlags = ParameterTypeFlags();
2125+
typeFlags = typeFlags.withInOut(tupleType->is<InOutType>());
2126+
if (auto *inOutTy = tupleType->getAs<InOutType>())
2127+
tupleType = inOutTy->getObjectType();
21132128
Identifier idName =
21142129
tuple_name.empty() ? Identifier() : ast->getIdentifier(tuple_name);
21152130
result._tuple_type_element = TupleTypeElt(tupleType, idName, typeFlags);
@@ -2350,6 +2365,10 @@ static void VisitNode(
23502365
VisitNodeSetterGetter(ast, node, result);
23512366
break;
23522367

2368+
case Demangle::Node::Kind::InOut:
2369+
VisitNodeInOut(ast, node, result);
2370+
break;
2371+
23532372
case Demangle::Node::Kind::ExistentialMetatype:
23542373
VisitNodeExistentialMetatype(ast, node, result);
23552374
break;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ $SytD ---> ()
33
$Ss5Int32VD ---> Int32
44
$S4blah4mainyyF8PatatinoL_VMa ---> Can't resolve type of $S4blah4mainyyF8PatatinoL_VMa
55
$Ss10CollectionP7Element ---> Can't resolve type of $Ss10CollectionP7Element
6+
$Ss15ContiguousArrayV9formIndex5afterySiz_tFSS_Tg5 ---> (inout Int) -> ()
67
$S12TypeReconstr8PatatinoaySiGD ---> Patatino<Int>
78
$S7ElementQzD ---> τ_0_0.Element
89
$S13EyeCandySwift21_previousUniqueNumber33_ADC08935D64EA4F796440E7335798735LLs6UInt64Vvp ---> UInt64

0 commit comments

Comments
 (0)