Skip to content

Commit f943949

Browse files
authored
Merge pull request swiftlang#16611 from dcci/typereco
2 parents 0910d7f + 8d3045d commit f943949

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

lib/IDE/TypeReconstruction.cpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1832,7 +1832,7 @@ static void VisitNodeInOut(
18321832
VisitNodeResult type_result;
18331833
VisitNode(ast, cur_node->getFirstChild(), type_result);
18341834
if (type_result._types.size() == 1 && type_result._types[0]) {
1835-
result._types.push_back(Type(InOutType::get(type_result._types[0])));
1835+
result._types.push_back(InOutType::get(type_result._types[0]));
18361836
} else {
18371837
result._error = "couldn't resolve referent type";
18381838
}
@@ -2049,16 +2049,17 @@ static void VisitNodeTupleElement(
20492049
}
20502050
}
20512051

2052-
if (tuple_type_result._error.empty() &&
2053-
tuple_type_result._types.size() == 1) {
2054-
if (!tuple_name.empty())
2055-
result._tuple_type_element =
2056-
TupleTypeElt(tuple_type_result._types.front().getPointer(),
2057-
ast->getIdentifier(tuple_name));
2058-
else
2059-
result._tuple_type_element =
2060-
TupleTypeElt(tuple_type_result._types.front().getPointer());
2061-
}
2052+
if (!tuple_type_result._error.empty() || tuple_type_result._types.size() != 1)
2053+
return;
2054+
2055+
auto tupleType = tuple_type_result._types.front();
2056+
auto typeFlags = ParameterTypeFlags();
2057+
typeFlags = typeFlags.withInOut(tupleType->is<InOutType>());
2058+
if (auto *inOutTy = tupleType->getAs<InOutType>())
2059+
tupleType = inOutTy->getObjectType();
2060+
Identifier idName =
2061+
tuple_name.empty() ? Identifier() : ast->getIdentifier(tuple_name);
2062+
result._tuple_type_element = TupleTypeElt(tupleType, idName, typeFlags);
20622063
}
20632064

20642065
static void VisitNodeTypeList(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ $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) -> ()

0 commit comments

Comments
 (0)